Разница между значением и значением элемента

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


person Warrior    schedule 28.11.2008    source источник


Ответы (2)


Значение предназначено для отправки объекта 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 = отправляемое значение. Если вы решите добавить value="#{TestBean.mySelectItem}", это никак не изменит выводимый HTML, но реализация JSF будет знать, что для этого следует использовать свойство getter для поля mySelectItem.

Изменить: чтобы немного уточнить ответ. Свойство value объекта SelectItem привязывает SelectItem к полю SelectItem в управляемом компоненте через свойства 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.

person Chris Dale    schedule 25.08.2009
comment
Я думаю, что у вас есть лучший (оригинальный) ответ здесь, но я прочитал это первое предложение 4 раза и все еще не понимаю его. Прояснить? - person jmanning2k; 25.08.2009
comment
Я согласен с Джоном (в части лучшего ответа). +1 - person VonC; 25.08.2009
comment
Теперь я добавил больше информации =) Надеюсь, это прояснит ситуацию. - person Chris Dale; 25.08.2009

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

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

attributeid

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

Значение предмета

person VonC    schedule 28.11.2008
comment
Эти изображения защищены авторским правом и не должны использоваться без разрешения. - person jmanning2k; 25.08.2009