java - 值(value)和元素值(value)之间的差异

标签 java html jsp jsf

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

最佳答案

该值旨在发送 SelectItem 对象,而不是像 itemValue 那样的字符串。 itemValue 是 items 值,它作为请求参数传递给服务器,但该值是指向 SelectItem 实例的值绑定(bind)表达式。

如果您查看此 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 绑定(bind)到托管 bean 中的 SelectItem 字段。如果您像这样设置值:

 <h:selectOneRadio value="">
    <f:selectItem itemValue="TestValue" itemLabel="TestLabel" value="#{TestBean.mySelect}"/>
</h:selectOneRadio>   

它将调用 TestBean 中的 getMySelectItem() 方法。如您所见,这与 itemValue 无关,因为 itemValue 负责设置用户提交表单时请求中的值。然后 itemValue 将存储在 h:selectOneRadio 的值中,希望您已将其绑定(bind)到这样的 String 字段:

<h:selectOneRadio value="#{TestBean.selectedRadioValue}">
<f:selectItem itemValue="1" itemLabel="1. radio one" />
<f:selectItem itemValue="2" itemLabel="2. radio two" />
</h:selectOneRadio>

现在,如果用户检查 radio ,在他看来是这样的:“1.radio one”,值“1”将存储在名为 selectedRadioValue 的 TestBean 变量中

关于java - 值(value)和元素值(value)之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/325616/

相关文章:

html - 显示 : table-cell, 边框间距不适用于按钮?

javascript - lambda函数如何访问外部数组

java - 在Struts2中如何检查List是否包含特定元素?

java - 重定向到youtube以上传可在jsp上使用的视频

java - 使用 Java http 客户端使用 Sharepoint 2010 REST API 发布数据

java - 如何将 DefaultTableModel 对象的数据放入 DefaultTableModel 的子类中

java - 泛型类的概念问题

html - 在不同颜色的 html anchor 下划线

java - Eclipse 用 'Dead code' 警告标记一段代码。为什么在这种情况下?

java - Netbeans 无法启动 Tomcat