10

Jsf中单选按钮的value和itemValue属性有什么区别?

4

2 回答 2

3

该值旨在发送 SelectItem 对象,而不是像 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 指向托管 bean 中的 SelectItem,而 itemValue = 正在提交的值。如果您决定添加 value="#{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 的值中,希望您已经绑定到这样的字符串字段:

<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 的变量中

于 2009-08-25T14:28:21.330 回答
0

来自这篇 IBM 文章使用单选按钮向 JSF 数据表添加行选择

属性 id用于单选按钮组的组件值。它将绑定到 Value 字段

属性id

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

项目价值

于 2008-11-28T12:20:32.183 回答