Разница между значением и значением элемента - PullRequest
9 голосов
/ 28 ноября 2008

В чем разница между значением и атрибутом itemValue радиокнопки в Jsf?

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

Значение предназначено для отправки в объекте 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

0 голосов
/ 28 ноября 2008

Из этой статьи IBM Добавление выбора строки в JSF с возможностью выбора данных с помощью переключателей :

Идентификатор атрибута предназначен для значения компонента группы переключателей. Он будет связан с полем Значение

attributeid

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

Item Value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...