Java 值和项目值之间的差异
Jsf中radiobutton的value和itemValue属性之间有什么区别?来自本文: 属性id用于单选按钮组的组件值。它将绑定到值字段 selectedRowId属性用于单选按钮的项目值,并将绑定到项目值字段Java 值和项目值之间的差异,java,html,jsp,jsf,Java,Html,Jsp,Jsf,Jsf中radiobutton的value和itemValue属性之间有什么区别?来自本文: 属性id用于单选按钮组的组件值。它将绑定到值字段 selectedRowId属性用于单选按钮的项目值,并将绑定到项目值字段 该值用于发送SelectItem对象,而不是类似itemValue的字符串。itemValue是items值,作为请求参数传递给服务器,但该值是指向SelectItem实例的值绑定表达式 如果您看看这个JSF: <h:selectOneRadio value="">
该值用于发送SelectItem对象,而不是类似itemValue的字符串。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=正在提交的值。如果您决定添加一个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>
<h:selectOneRadio value="#{TestBean.selectedRadioValue}">
<f:selectItem itemValue="1" itemLabel="1. radio one" />
<f:selectItem itemValue="2" itemLabel="2. radio two" />
</h:selectOneRadio>
它将调用TestBean中的getMySelectItem()方法。正如您所见,这与itemValue无关,因为itemValue负责设置用户提交表单时请求中的内容的值。然后,itemValue将存储在h:selectOneRadio的值中,希望您已绑定到如下字符串字段:
<h:selectOneRadio value="">
<f:selectItem itemValue="TestValue" itemLabel="TestLabel" value="#{TestBean.mySelect}"/>
</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遍,但仍然很难理解它。澄清?我同意乔恩(关于“更好”的答案)+1我现在添加了更多信息=)希望这能澄清问题