Der Wert soll ein SelectItem-Objekt und nicht einen String wie itemValue senden. Der Wert itemValue ist der Wert items, der als Anforderungsparameter an den Server übergeben wird. Der Wert ist jedoch ein wertgebundener Ausdruck, der auf eine SelectItem-Instanz verweist.
Wenn Sie sich dieses JSF ansehen:
%Vor%was zu diesem HTML wird:
%Vor%So value = valueBinding, das auf ein SelectItem in Ihrer verwalteten Bean verweist, und itemValue = der Wert, der gesendet wird. Wenn Sie beschlossen haben, einen Wert="# {TestBean.mySelectItem}" hinzuzufügen, würde das ausgegebene HTML in keiner Weise ändern, aber die JSF-Implementierung würde wissen, dass die Getter-Eigenschaft für das mySelectItem-Feld verwendet werden sollte.
Bearbeiten: Um die Antwort ein wenig mehr zu klären. Die value-Eigenschaft von SelectItem bindet das SelectItem über Getter- und Setter-Eigenschaften an ein SelectItem-Feld in der verwalteten Bean. Wenn Sie den Wert wie folgt festlegen:
%Vor%ruft die Methode getMySelectItem () in der TestBean auf. Wie Sie sehen, hat dies nichts mit dem itemValue zu tun, da der itemValue dafür verantwortlich ist, den Wert dessen festzulegen, was in der Anfrage enthalten ist, wenn der Benutzer das Formular abschickt. Der Wert von itemValue wird dann im Wert von h: selectOneRadio gespeichert, den Sie hoffentlich an ein String-Feld gebunden haben:
%Vor%Wenn nun der Benutzer das Radio sieht, das ihm ähnelt: " 1. radio one " wird der Wert "1" in der TestBean-Variablen selectedRadioValue
gespeichertAus diesem IBM Artikel Zeilenauswahl zu einer JSF-Datentabelle mithilfe von Optionsfeldern hinzufügen :
Die Attribut-ID gilt für den Komponentenwert der Optionsfeldgruppe. Es wird an das Feld Wert gebunden
Das Attribut selectedRowId bezieht sich auf den Elementwert des Optionsfelds und ist an das Elementwertfeld
gebunden