У меня есть вид лица JSF 2.0, содержащий форму поиска, пользовательский интерфейс: повтор для отображения результатов и пейджер.Он поддерживается бином запроса.Форма сообщения состоит из текущей страницы и критериев поиска.Пейджер показывает ссылки на следующую и предыдущую страницы в зависимости от позиции в наборе данных и количества результатов запроса с критериями поиска из формы.Таким образом, дерево компонентов зависит от атрибутов запроса.Например, я использую атрибут рендеринга на следующей странице, например,
<h:commandLink action="#{listBean.nextPage}" rendered="#{listBean.hasNextPage}" >...
Когда пользователь нажимает эту ссылку, запрос POST содержит текущую страницу и критерии поиска.Проблема в том, что дерево компонентов уже встроено в RESTORE_VIEW.В настоящий момент, поскольку атрибуты запроса еще не применены, я не могу сказать, на какой странице находится пользователь в данный момент или сколько записей в наборе данных, потому что у меня нет критериев поиска.Таким образом, listBean.hasNextPage оценивается как ложный на этом этапе.Это кажется причиной того, что CommandLink исчезает из дерева компонентов.После APPLY_REQUEST_VALUES я могу составить запрос на подсчет.С этой информацией и текущей страницей я мог бы вычислить listBean.hasNextPage.Тем не менее, кажется, что он не будет оценен снова, пока RENDER_RESPONSE.Действие не вызывается в INVOKE_APPLICATION вообще.Также нет ошибки, что раздражает.
Работает при замене отрисовки на c: if.c: if оценивается только в RENDER_RESPONSE один раз, а компонент находится в дереве на первых этапах по умолчанию.Мне это не очень нравится, потому что в (редком, допустимом) количестве наборов данных меняется, так что на самом деле следующей страницы нет, она все равно будет вызывать действие, и пользователь окажется на недопустимой странице.Также я понимаю, что использование JSTL-тегов в Facelets не рекомендуется.Я не знаю, почему.
Есть ли какая-нибудь хитрость, чтобы сделать задержку оценки отложенной до APPLY_REQUEST_VALUES?Должен быть способ использовать этот атрибут в свойствах, которые зависят от текущего запроса.К вашему сведению, это приложение с портлетами 2.0 на Liferay с мостом портлетов JBoss, но я думаю, что это общая проблема JSF.
Заранее спасибо за любые ответы.Надеюсь, я просто что-то упускаю из виду, я все еще изучаю JSF - не сложно написать пейджер, верно: -)