我有 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 个子菜单。