值与itemvalue之间的差异

时间:2008-11-28 12:10:07

标签: java html jsp jsf

Jsf中radiobutton的value和itemValue属性有什么区别?

2 个答案:

答案 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字段

attributeid

属性selectedRowId用于单选按钮的项值,并将绑定到项值字段

Item Value