我的问题我很容易但我找不到明确的解决方案。
我有三个selectOneMenu,我希望第一个总是渲染,第二个渲染,如果第一个选择了某个值,第三个渲染,如果第二个选择了某个值。
第一个和第二个之间的关系运作良好,但在第二个和第三个之间不起作用。
当我更改第一个selectOneMenu的值时,第二个selectOneMenu被正确显示或隐藏。 但是当我更改第二个值时,第三个selectOneMenu没有发生任何事情,就像f:ajax render没有被触发一样。
使用jsf代码:
<h:panelGrid columns="2">
<h:outputText value="Type Paiement" />
<h:selectOneMenu
value="#{employeurBean.idTypePaiement}">
<f:selectItem itemValue="" itemLabel="Choix typePaiement" />
<f:selectItems value="#{typePaiementBean.typesPaiement}" var="vtp"
itemLabel="#{vtp.libelle}" itemValue="#{vtp.idTypePaiement}" />
<f:ajax event="change" render="gmodp" />
</h:selectOneMenu>
</h:panelGrid>
<h:panelGrid id="gmodp">
<h:panelGroup rendered="#{employeurBean.idTypePaiement == 2}">
<h:outputText value="Mode Paiement" />
<h:selectOneMenu
value="#{employeurBean.idModePaiement}">
<f:selectItem itemValue="" itemLabel="Choix mode Paiement" />
<f:selectItems value="#{modePaiementBean.modesPaiement}" var="vmp"
itemLabel="#{vmp.libelle}" itemValue="#{vmp.idModePaiement}" />
<f:ajax event="change" render="grib"/>
</h:selectOneMenu>
</h:panelGroup>
</h:panelGrid>
<h:panelGrid id="grib">
<h:panelGroup rendered="#{employeurBean.idModePaiement == 1}">
<h:outputText value="Compte" />
<h:inputText value="#{employeurBean.compte}">
</h:inputText>
</h:panelGroup>
</h:panelGrid>
有没有想法实现这一目标。 非常感谢您的帮助
答案 0 :(得分:1)
如果bean是请求作用域和/或您正在使用getter方法而不是动作侦听器方法执行业务操作(例如预加载列表),则此构造将失败。确保将bean放在视图范围中,并且您正在使用动作侦听器方法执行业务操作。
如果这不能解决问题,那么你真的必须在问题中的视图代码中发布支持bean代码。