JSF输入到多个后端Bean属性

3

我有一些情况,其中我有一个JSF页面,对于单个输入,我希望在不在后端代码中进行操作的情况下在后端bean上设置多个值。

我可以设置单个值:

 <h:selectOneRadio id="selectMembershipLevel" class="TODO_SELECT" 
value="#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_code]}">
 <f:selectItem id="basic" itemLabel="#{overrideMsg.pbBasic}" itemValue="B" />
 <f:selectItem id="plus" itemLabel="#{overrideMsg.pbPlus}" itemValue="P" />
 <f:selectItem id="plusRV" itemLabel="#{overrideMsg.pbPlusRV}" itemValue="RV" />

但如果我想一次设置多个,那么JSF页面上能做到吗?

#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_code]}
#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_desc]}//Bdesc
#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_type]}//Btype
1个回答

5
使用<h:inputHidden>绑定其他属性,并在第一个输入的change事件中使用JavaScript来操作这些隐藏输入的值,使其与第一个输入的当前值相同。
以下是一个简单例子:
<h:form id="form">
    <h:selectOneRadio value="#{bean.input1}" onchange="document.getElementById('form:input2').value = document.getElementById('form:input3').value = this.value">
        <f:selectItem itemValue="one" />
        <f:selectItem itemValue="two" />
        <f:selectItem itemValue="three" />
    </h:selectOneRadio>
    <h:inputHidden id="input2" value="#{bean.input2}" />
    <h:inputHidden id="input3" value="#{bean.input3}" />
    ...
</h:form>

显然,随意重构为JS函数或添加一些jQuery。请记住,如果客户端禁用了JS,则所有这些都无法正常工作,并且最终用户可以操纵JS代码和请求参数。如果您绝对需要值相等,则服务器端解决方案更加稳健。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接