【问题标题】:Difference between value and itemvaluevalue 和 itemvalue 的区别
【发布时间】:2023-03-03 03:50:01
【问题描述】:

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

【问题讨论】:

    标签: java html jsp jsf


    【解决方案1】:

    来自这篇 IBM 文章Adding row selection to a JSF datatable using radio buttons

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

    selectedRowId属性为单选按钮的item value,会绑定到item value字段

    【讨论】:

    • 这些图片版权所有,未经许可不得使用。
    【解决方案2】:

    该值旨在发送 SelectItem 对象,而不是像 itemValue 那样的字符串。 itemValue 是 item 的值,作为请求参数传递给服务器,但 value 是一个值绑定表达式,指向一个 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 的变量中

    【讨论】:

    • 我认为您在这里有一个更好的(原始)答案,但我已经将第一句话读了 4 次,但仍然无法理解。澄清一下?
    • 我同意 Jon 的观点(关于“更好”的答案部分)。 +1
    • 我现在添加了更多信息 =) 希望这会澄清一些事情
    猜你喜欢
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多