вложенный пользовательский интерфейс: повторная проблема (или f: ajax)

у меня есть 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

    • son menu_1
    • сын меню_2

  • меню отца 2

    • son menu2_1
    • сын меню2_2
    • сын меню2_3

и т.д..

когда я щелкаю в этом подменю, я использую f: ajax для отображения группы панелей с подробной информацией о выбранных меню (он показывает связанные с ними страницы), проблема в том, что он работает правильно только для родительского меню 1 и его подменю, но для родительского меню 2, оно работает нормально для двух первых подменю, если есть третье подменю, связанное с «отцовским меню 2», и я нажимаю на него, оно ничего не делает.

я не уверен, что это проблема с вложенным ui:repeat или с f:ajax, но я думаю, что ui:repeat перестает работать должным образом после второй итерации или что-то в этом роде. функция «setMenu()» (внутри вложенного ui:repeat) перестают работать по какой-то причине. но это может быть и f:ajax.. я действительно не знаю.

РЕДАКТИРОВАТЬ:

теперь я нашел проблему, но я еще не знаю, как ее решить.

проблема в том, что для первой итерации (первое меню и его подменю) метод, который я вызываю в действии "setMenu()", работает нормально, но для второй итерации (отцовское меню 2 и его подменю) метод setMenu() вызывается только 2 раза, если есть более 2 подменю, метод, который я вызываю в действии (setMenu()), не работает, я имею в виду, что итерация работает, потому что она печатает все имена меню и подменю, но действие после первой итерации работает только для 2 подменю.


person user2018726    schedule 18.02.2013    source источник
comment
используя только действие вместо actionListener, происходит то же самое. На самом деле я просто перешел на actionListener, чтобы посмотреть, что произойдет.   -  person user2018726    schedule 18.02.2013
comment
if there is a third submenu associated Я вижу здесь только 2 итерации, поэтому два подменю, не так ли? Событие запускается? Я имею в виду, если вы поставите точку останова, пройдет ли она через нее? Если нет, попробуйте с action в порядке actionListener и попробуйте с изменением имен методов действия, чтобы избежать проблем, связанных с публикацией IDE/сервера.   -  person Xtreme Biker    schedule 18.02.2013
comment
это меню поддерживает только 2 уровня, поэтому есть только 2 итерации. Моя проблема здесь не в создании меню. работает только для моего первого меню и подменю, но когда я нажимаю на подменю моего второго отцовского меню, он показывает детали первых двух подменю, но если их больше, он не показывает детали других .. посмотрите на формат меню я описал в моем первом посте.. в этой модели все работает, кроме того, что если я нажимаю в сын меню2_3, ничего не происходит.   -  person user2018726    schedule 18.02.2013


Ответы (1)


я изменил ui:repeat на datatable, и он работал так, как я хотел.

person user2018726    schedule 20.02.2013
comment
Вы используете Мохарру? В нем действительно есть связанная ошибка, которая исправлена ​​в версии 2.1.14. - person BalusC; 21.02.2013