Загрузить ajax-загрузку в JSF

Хорошо, вот моя проблема: у меня есть приложение JSF и несколько файлов JSP. Допустим, у меня есть main.jsp, который имеет представление и включает в себя sub.jsp. Это прекрасно работает. sub.jsp содержит подпредставление. В результате все идентификаторы элементов формы в sub.jsp соответствуют форме «subview:component». Теперь предположим, что я использую какой-то ajax и хочу получить jsp-страницу sub.jsp и включить ее где-нибудь в DIV. Теперь все идентификаторы имеют форму «компонент». Я не знаю, как это обойти, и необходимость проверять два разных набора идентификаторов в моем интерактивном javascript - это боль. Есть ли способ получить согласованные идентификаторы?

Я пробовал: удаление подвида - (тогда вызов AJAX завершится ошибкой, потому что представление не найдено)

и

h:form prependid=false — удаляет только идентификатор формы, а не идентификаторы подвида


person GBa    schedule 18.11.2008    source источник


Ответы (2)


AJAX сложно сделать с JSF. Если используемая вами среда JSF не поддерживает ее, вы столкнетесь со многими проблемами состояния представления.

Я удивлен, что при прямом обращении к sub.jsp не возникает исключение — в sub.jsp не должно быть h:view, а без UIViewRoot я бы Я не уверен, как будет создано дерево пользовательского интерфейса. Если у вас есть h:view в sub.jsp, то вы помещаете два UIViewRoots в свое дерево пользовательского интерфейса — это ошибка. (Дерево компонентов JSF примерно аналогично дереву других наборов виджетов Java, таких как Swing или SWT.)

Я подозреваю, что проблема, которую вы наблюдаете, заключается в том, что вы отправляете представление, отличное от того, которое было изначально отображено. Поскольку дерево компонентов совершенно другое, clientIds будут генерироваться из другого корня представления. Вы можете прочитать о том, как они построены, в этот ответ.

Короче говоря, я не думаю, что механизм, который вы используете для обновления клиента, является допустимым.

person McDowell    schedule 18.11.2008

Вы смотрели на ajax4Jsf (он же Richfaces)?

person Damo    schedule 23.02.2009