



Из этой статьи IBM Добавление выбора строки в таблицу данных JSF с помощью переключателей:
идентификатор атрибута предназначен для значения компонента группы переключателей. Он будет привязан к полю Value

Атрибут selectedRowId предназначен для стоимость предмета переключателя и будет привязан к полю значения элемента.

Значение предназначено для отправки в объекте SelectItem, а не в String, например itemValue. ItemValue - это значение элементов, которое передается на сервер в качестве параметра запроса, но значение является выражением привязки значения, которое указывает на экземпляр SelectItem.
Если вы посмотрите на этот JSF:
<h:selectOneRadio value = "">
<f:selectItem itemValue = "TestValue" itemLabel = "TestLabel" />
</h:selectOneRadio>
который превращается в этот 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>
Итак, value = valueBinding указывает на SelectItem в вашем управляемом компоненте, а itemValue = значение, которое отправляется. Если вы решили добавить значение = "# {TestBean.mySelectItem}", это никоим образом не изменит выводимый HTML, но реализация JSF будет знать, что для этого следует использовать свойство getter для поля mySelectItem.
Редактировать: Чтобы уточнить ответ немного подробнее. Свойство value объекта SelectItem связывает SelectItem с полем SelectItem в управляемом компоненте через свойства получения и установки. Если вы установите такое значение:
<h:selectOneRadio value = "">
<f:selectItem itemValue = "TestValue" itemLabel = "TestLabel" value = "#{TestBean.mySelect}"/>
</h:selectOneRadio>
он вызовет метод getMySelectItem () в TestBean. Как видите, это не имеет ничего общего с itemValue, поскольку itemValue отвечает за установку значения того, что входит в запрос, когда пользователь отправляет форму. Затем itemValue будет сохранен в значении h: selectOneRadio, которое, надеюсь, вы связали с полем String следующим образом:
<h:selectOneRadio value = "#{TestBean.selectedRadioValue}">
<f:selectItem itemValue = "1" itemLabel = "1. radio one" />
<f:selectItem itemValue = "2" itemLabel = "2. radio two" />
</h:selectOneRadio>
Теперь, если пользователь проверяет радио, которое для него выглядит так: «1. радио один», значение «1» будет сохранено в переменной TestBean с именем selectedRadioValue.
Я думаю, что у вас есть лучший (оригинальный) ответ здесь, но я прочитал это первое предложение 4 раза, и все еще не могу его понять. Уточнить?
Я согласен с Джоном (в части ответа «лучше»). +1
Я добавил больше информации сейчас =) Надеюсь, это прояснит ситуацию
Эти изображения защищены авторским правом и не должны использоваться без разрешения.