2008-11-28 15 views

Respuesta

3

El valor está destinado a enviar un objeto SelectItem y no un String like itemValue is. El itemValue es el valor de los elementos, que se pasa al servidor como un parámetro de solicitud, pero el valor es una expresión de enlace de valor que apunta a una instancia de SelectItem.

Si nos fijamos en este JSF:

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

que se convierte en este 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> 

Así valor = valueBinding que apunta a una SelectItem en su bean gestionado, y ItemValue = el valor que está siendo enviado. Si decidió agregar un valor = "# {TestBean.mySelectItem}", no cambiaría el HTML generado de ninguna manera, pero la implementación de JSF sabría que la propiedad getter para el campo mySelectItem debería usarse en esto.

Editar: Para aclarar la respuesta un poco más. La propiedad value del SelectItem vincula el elemento SelectItem a un campo SelectItem en el bean gestionado a través de las propiedades getter y setter. Si se establece el valor de la siguiente manera:

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

se invocará el método getMySelectItem() en el testBean. Como puede ver, esto no tiene nada que ver con itemValue, ya que itemValue es responsable de establecer el valor de lo que se incluye en la solicitud cuando el usuario envía el formulario. El ItemValue a continuación, se almacena en el h: valor de selectOneRadio que es de esperar que haya ligado a un campo de cadena como esta:

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

Ahora bien, si el usuario comprueba la radio que le parece: "1. Radio uno "el valor" 1 "se almacenará en la variable de TestBean llamada selectedRadioValue

+1

Creo que aquí tienes una respuesta mejor (original), pero he leído la primera oración 4 veces y todavía tengo problemas para entenderla. ¿Aclarar? – jmanning2k

+0

Estoy de acuerdo con Jon (en la parte de respuesta "mejor"). +1 – VonC

+0

He añadido más información ahora =) Espero que esto aclare las cosas –

0

De este artículo IBM Adding row selection to a JSF datatable using radio buttons:

El atributo ID es para el valor del componente del Grupo de botones de radio. Quedará vinculado al campo Valor

attributeid

El atributo selectedRowId es para el valor elemento del botón de opción, y estará obligado al campo valor del artículo

Item Value

+1

Esas imágenes están protegidas por derechos de autor y no deben utilizarse sin permiso. – jmanning2k

Cuestiones relacionadas