JSF输入到多个支持bean属性

时间:2013-01-25 16:10:19

标签: jsf tags backing-beans

在某些情况下,我有一个JSF页面,对于单个输入,我想在辅助bean上设置多个值而不在辅助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 个答案:

答案 0 :(得分: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代码并请求参数,则这一切都将无效。如果您绝对需要相等的值,服务器端解决方案会更加强大。