Значение предназначено для отправки в объекте 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>
Таким образом, значение = valueBinding указывает на SelectItem в управляемом компоненте, а itemValue = значение, которое передается. Если вы решили добавить значение = "# {TestBean.mySelectItem}", это никак не изменит выводимый HTML, но реализация JSF будет знать, что для этого следует использовать свойство getter для поля mySelectItem.
Редактировать: Чтобы уточнить ответ немного больше. Свойство value SelectItem связывает SelectItem с полем SelectItem в управляемом bean-компоненте через свойства getter и setter. Если вы установите значение следующим образом:
<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. Radio one », значение «1» будет сохранено в переменной TestBean с именем selectedRadioValue