级联动态渲染selectOneMenu不起作用

时间:2011-10-17 19:18:05

标签: jsf-2

我的问题我很容易但我找不到明确的解决方案。

我有三个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> 

有没有想法实现这一目标。 非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果bean是请求作用域和/或您正在使用getter方法而不是动作侦听器方法执行业务操作(例如预加载列表),则此构造将失败。确保将bean放在视图范围中,并且您正在使用动作侦听器方法执行业务操作。

如果这不能解决问题,那么你真的必须在问题中的视图代码中发布支持bean代码。