Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 级联动态渲染选择菜单不';行不通_Jsf 2 - Fatal编程技术网

Jsf 2 级联动态渲染选择菜单不';行不通

Jsf 2 级联动态渲染选择菜单不';行不通,jsf-2,Jsf 2,我认为我的问题很简单,但我找不到明确的解决办法 我有三个SelectOne菜单,我希望第一个菜单始终渲染,如果第一个菜单选择了某个值,则渲染第二个菜单,如果第二个菜单选择了某个值,则渲染第三个菜单 第一个和第二个之间的关系很好,但第二个和第三个之间不起作用 当我更改第一个selectOneMenu的值时,第二个selectOneMenu将正确显示或隐藏。 但是当我更改第二个菜单的值时,第三个selectOneMenu没有发生任何变化,比如没有触发f:ajax渲染 下面是jsf代码: <h:

我认为我的问题很简单,但我找不到明确的解决办法

我有三个SelectOne菜单,我希望第一个菜单始终渲染,如果第一个菜单选择了某个值,则渲染第二个菜单,如果第二个菜单选择了某个值,则渲染第三个菜单

第一个和第二个之间的关系很好,但第二个和第三个之间不起作用

当我更改第一个selectOneMenu的值时,第二个selectOneMenu将正确显示或隐藏。 但是当我更改第二个菜单的值时,第三个selectOneMenu没有发生任何变化,比如没有触发f:ajax渲染

下面是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> 

有没有办法做到这一点。
非常感谢您的帮助

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


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

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


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

谢谢您的回答,我正在简化支持bean的代码以发布它,最后用简化的代码解决了问题。所以问题是,支持bean有一个父bean,而该父bean不可序列化,我使其可序列化,问题就解决了。谢谢你的回答,我正在简化支持bean的代码以发布它,最后用简化的代码解决了问题。所以问题是,支持bean有一个父bean,而该父bean不可序列化,我将其设置为可序列化,问题就解决了。