级联动态渲染selectOneMenu不起作用

发布于 2024-12-10 03:19:01 字数 1732 浏览 0 评论 0原文

我认为我的问题很简单,但我找不到明确的解决方案。

我有三个 selectOneMenu,我希望始终呈现第一个,如果第一个选择了某个值,则呈现第二个,如果第二个选择了某个值,则呈现第三个。

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

当我更改第一个 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> 

有什么想法可以实现这一点吗? 非常感谢您的帮助

My problem I thougth is simple but I can't find a clear solution.

I have three selectOneMenu, and I want that the first one is always rendered, the second one is rendered if the first one has some value selected and the third one is rendered if the second has some value selected.

The relation between the first one and the second works well, but doesn't work between the second and the third.

When I change the value for the first selectOneMenu the second selectOneMenu is diplayed or hidden correctly.
But when I change the value for the second nothing happened to the third selectOneMenu, like if the f:ajax render isn't fired.

Bellow the jsf code:

<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> 

Is there any idea to achieve that.
Many thanks for your help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

内心激荡 2024-12-17 03:19:01

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

如果这不能解决问题,那么您确实必须将支持 bean 代码与问题中的视图代码一起发布。

This construct will fail if the bean is request scoped and/or you're doing business actions (such as preloading the list) in getter methods instead of action listener methods. Ensure that the bean is been placed in the view scope and that you're doing business actions in action listener methods.

If that doesn't solve the problem, then you really have to post the backing bean code along the view code in your question.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文