Загрузить AJAX загрузить в JSF - PullRequest
1 голос
/ 18 ноября 2008

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

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

и

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

Ответы [ 2 ]

2 голосов
/ 18 ноября 2008

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

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

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

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

0 голосов
/ 23 февраля 2009

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

...