0

我有 2 个 ui:repeat 像这样嵌套:

<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

    • 儿子菜单_1
    • 儿子菜单_2

  • 父亲菜单 2

    • 儿子菜单2_1
    • 儿子菜单2_2
    • 儿子菜单2_3

ETC..

当我单击此子菜单时,我使用 f:ajax 呈现具有所选菜单详细信息的面板组(它显示与其关联的页面),问题是它仅适用于父菜单 1 及其子菜单,但适用于父亲菜单 2,它的 2 第一个子菜单工作正常,如果有第三个子菜单与“父菜单 2”相关联,我点击它,它什么也不做。

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

编辑:

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

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

4

1 回答 1

1

我将 ui:repeat 更改为数据表,它按我的意愿工作。如果您需要在内部调用某些操作,我不建议使用 ui:repeat 嵌套,它有奇怪的行为。

于 2013-02-20T14:47:11.570 回答