Diferença entre valor e itemvalor

9

Qual é a diferença entre o atributo value e itemValue do radiobutton no Jsf?

    
por Warrior 28.11.2008 в 13:10
fonte

2 respostas

2

O valor destina-se a enviar um objeto SelectItem e não uma String como itemValue. O itemValue é o valor de itens, que é passado para o servidor como um parâmetro de solicitação, mas o valor é uma expressão de ligação de valor que aponta para uma ocorrência de SelectItem.

Se você olhar para este JSF:

 <h:selectOneRadio value="">
    <f:selectItem itemValue="TestValue" itemLabel="TestLabel" />
</h:selectOneRadio>

que se transforma neste HTML:

<table>
    <tr>
    <td>
        <input type="radio" name="j_id_id9" id="j_id_id9:0" value="TestValue" />
        <label for="j_id_id9:0"> TestLabel</label>
    </td>
    </tr>
</table>

Então value = valueBinding apontando para um SelectItem no seu bean gerenciado, e itemValue = o valor que está sendo submetido. Se você decidiu adicionar um valor="# {TestBean.mySelectItem}" ele não alteraria o HTML gerado de qualquer forma, mas a implementação do JSF saberia que a propriedade getter para o campo mySelectItem deveria ser usada nesta.

Editar: Para esclarecer a resposta um pouco mais. A propriedade value do SelectItem vincula o SelectItem a um campo SelectItem no bean gerenciado através das propriedades getter e setter. Se você definir o valor da seguinte forma:

 <h:selectOneRadio value="">
    <f:selectItem itemValue="TestValue" itemLabel="TestLabel" value="#{TestBean.mySelect}"/>
</h:selectOneRadio>   

ele invocará o método getMySelectItem () no TestBean. Como você pode ver, isso não tem nada a ver com o itemValue, já que o itemValue é responsável por definir o valor do que acontece na solicitação quando o usuário envia o formulário. O itemValue será então armazenado no valor de h: selectOneRadio, que esperamos que você tenha vinculado a um campo String como este:

<h:selectOneRadio value="#{TestBean.selectedRadioValue}">
<f:selectItem itemValue="1" itemLabel="1. radio one" />
<f:selectItem itemValue="2" itemLabel="2. radio two" />
</h:selectOneRadio>

Agora, se o usuário verificar o rádio que para ele se parece: " 1. rádio um " o valor "1" será armazenado na variável do TestBean chamada selectedRadioValue

    
por Chris Dale 25.08.2009 / 16:28
fonte
0

Neste artigo da IBM Adicionando seleção de linha a um datast JSF usando botões de opção :

O atributo id é para o valor do componente do grupo de botões de opção. Ela será vinculada ao campo Valor

OatributoselectedRowIdéparaovalordoitemdobotãodeopçãoeserávinculadoaocampodevalordoitem

    
por VonC 28.11.2008 / 13:20
fonte