Jsf中radiobutton的value和itemValue属性有什么区别?
答案 0 :(得分:2)
该值用于发送SelectItem对象,而不是像itemValue那样的String。 itemValue是items值,它作为请求参数传递给服务器,但该值是一个指向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指向托管bean中的SelectItem,而itemValue =正在提交的值。如果您决定添加一个值=“#{TestBean.mySelectItem}”,它将不会以任何方式更改输出的HTML,但JSF实现将知道mySelectItem字段的getter属性应该用于此。
修改:要澄清答案。 SelectItem的value属性通过getter和setter属性将SelectItem绑定到托管bean中的SelectItem字段。如果您设置如下值:
<h:selectOneRadio value="">
<f:selectItem itemValue="TestValue" itemLabel="TestLabel" value="#{TestBean.mySelect}"/>
</h:selectOneRadio>
它将调用TestBean中的getMySelectItem()方法。正如您所看到的,这与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”将存储在名为selectedRadioValue的TestBean变量中
答案 1 :(得分:0)
来自这篇IBM文章Adding row selection to a JSF datatable using radio buttons:
属性ID 用于单选按钮组的组件值。它将绑定到Value字段
属性selectedRowId用于单选按钮的项值,并将绑定到项值字段