0

嗨,在我的 JSF 表单中,我有三个选择框。这是代码:

<h:form id="newRequestForm">
                <h1>New Request</h1>
                <br/>
                <h:panelGrid columns="4">


                    <h:selectOneMenu id="issueID" style="margin-left: 3px;" value="#{mycontroller.requestType}">
                        --few items----
                        <f:ajax event="change" listener="#{mycontroller.changeTypeList}"  render="selectDevice" execute="@this" />
                    </h:selectOneMenu>


                <br/>

                <div id="sessionDiv" columns="2">

                    <h:selectOneMenu id="selectRole" style="margin-left: 29px;" value="#{mycontroller.roleID}">
                        <f:selectItems  value="#{mycontroller.roleList}"  itemValue="#{mycontroller.roleList}"/>
                    </h:selectOneMenu>  
                </div>
                <div id="deviceDiv" columns="2">

                    <h:selectOneMenu id="selectDevice" style="margin-left: 18px;" value="#{mycontroller.userId}">
                        <f:selectItems  value="#{mycontroller.deviceList}" var="device" itemValue="#{device.deviceId}"/>
                    </h:selectOneMenu> 
                </div>
                <div id="userDiv" columns="2">

                    <h:selectOneMenu id="selectUser" style="margin-left: 50px;" value="#{mycontroller.userIdReq}">
                        <f:selectItems  value="#{mycontroller.usersList}"  var="user" itemValue="#{user.userId}"/>
                    </h:selectOneMenu> 
                </div>
                <br/>

                <br/>

                <h:commandButton action="#{requestSupportController.submitRequest}"   value="Submit Request" style="margin-top: 20px"/>   

            </h:form>

现在,当表单第一次加载时,最后三个 div 被隐藏,并根据第一个 div 的下拉值显示 reminaing div。现在在我的 ajax 事件中,我使用 render="selectDevice" 填充该下拉列表中的值。

我实际上有三个场景:a)如果第一个 div 中的选定项目是“角色”,则所有 roleId 都应填充到第二个 div b)如果第一个 div 中的选定项目是“设备”,则应填充所有 deviceID在第三个 div 中 c)如果第一个 div 中的选定项目是“用户”,则所有用户 ID 都应该填充到第四个 div

我如何才能实现这一点,因为渲染只能渲染一个 div。当我使用 render="@form" 时,所有 div 都会显示而不是隐藏。

4

1 回答 1

2

如何将具有适当条件的渲染属性添加到 h:selectOneMenu?然后你应该可以毫无问题地使用 render="@form" / render="selectRole selectDevice selectUser" 。(请参阅在选择一个 selectOneMenu 后渲染其他 selectOneMenu 组件

于 2013-10-16T20:34:03.420 回答