嵌套的ui:重复问题(或f:ajax)

时间:2013-02-18 16:02:26

标签: jsf-2 uirepeat

我有2个ui:重复嵌套如下:

<ui:repeat var="father" value="#{miuchile3.getMenusPadre(miuchile3.keyModulo)}" >
             <li>

                 <h:commandLink value="#{father.nombre}"  action="#{miuchile3.setMenu(father)}">
                 <f:ajax render=":menupags:menuDetalle" />
                 </h:commandLink>


                 <ul>
                     <ui:repeat var="submenu" value="#{miuchile3.getHijos(father.id)}" >
                         <li><h:commandLink value="#{submenu.nombre}" actionListener="#{miuchile3.setMenu(submenu)}">
                            <f:ajax  render=":menupags:menuDetalle" />
                         </h:commandLink></li>
                     </ui:repeat>


                 </ul>


               </li>



              </ui:repeat>

这将生成一个具有此格式的菜单

  • 父亲菜单1

    • son menu_1
    • son menu_2

  • 父亲菜单2

    • son menu2_1
    • son menu2_2
    • son menu2_3

等。

当我点击这个子菜单时,我使用f:ajax渲染一个面板组,其中包含所选菜单的详细信息(它显示与它们相关的页面),问题是它只适用于父菜单1及其子菜单,但对于父亲菜单2,它的2个第一个子菜单可以正常工作,如果有第三个子菜单与“父菜单2”相关联并且我点击它,它什么都不做。

我不确定它是否与嵌套的ui:repeat或f:ajax存在问题,但我认为ui:在第二次迭代之后重复停止正常工作或类似的事情......“setMenu()”函数(在嵌套的ui中:重复)由于某种原因停止工作。但也可能是f:ajax ......我真的不知道。

编辑:

现在我发现了这个问题,但我还不知道如何解决它。

问题是,对于第一次迭代(frist菜单及其子菜单),在动作“setMenu()”中调用的方法可以正常工作,但是对于第二次迭代(父菜单2及其子菜单),setMenu( )方法只被调用2次,如果有超过2个子菜单​​,则在动作中调用的方法(setMenu())不起作用,我的意思是迭代有效,因为它打印了菜单和子菜单的所有名称,但是第一次迭代后的操作仅适用于2个子菜单​​。

1 个答案:

答案 0 :(得分:1)

我改变了ui:重复一个数据表,它按照我的意愿工作..我不建议使用ui:重复嵌套如果你需要在里面调用一些动作,它有奇怪的行为。