在某些情况下,我有一个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
答案 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代码并请求参数,则这一切都将无效。如果您绝对需要相等的值,服务器端解决方案会更加强大。