Помещение данных области запроса в область действия сессии сильно (очень) сильно укусит вас, если вы собираетесь открыть одну и ту же страницу в нескольких окнах / вкладках. Используйте область действия сеанса только в том случае, если сами данные также действительно ограничены сессией (отличные примеры - "зарегистрированный пользователь" и "корзина покупок", вы хотите, чтобы они были одинаковыми на протяжении всего сеанса ). Опять же, не помещайте данные области запроса в область сеанса. Больно и вам, и конечному пользователю.
Просто спроектируйте интеллектуальные bean-компоненты (не имеет смысла иметь разные bean-компоненты, содержащие одни и те же данные) и используйте h:inputHidden
там, где это необходимо, при необходимости в сочетании с внедрением управляемого свойства. Это действительно немного боль в коде и поддержке. С другой стороны, вы также можете просто взять Томагавк <t:saveState>
, если передаваемые данные на самом деле столь же велики, как и "целый" управляемый компонент. На странице JSF это стоит всего одна строка и всегда оказывало большую помощь.
* Например, если у меня есть страница 1 с расширенными поисковыми фильтрами, которая перенаправляет на страницу 2, в зависимости от выбранного элемента, и со страницы 2, вы получите другой список, где вы можете перейти на страницу 3 для получения подробной информации. Теперь каждый раз, когда мне нужно поместить все параметры в область запроса / прочитать их снова, сохранить их в скрытых полях и вернуть их обратно.
Что именно не так с этим методом и как лучше это сделать в JSF? *
В этом методе нет ничего плохого. Может быть, вы неправильно его закодировали, из-за чего он выглядит излишне сложным. Я не могу сказать ничего, если вы не публикуете подробности об используемом коде.
Согласно вашему редактированию:
РЕДАКТИРОВАТЬ: среда IBM Rational Application Developer (RAD), которая имеет собственную реализацию JSF. Не уверен, если это имеет значение.
Это не правда. У IBM нет никакой реализации JSF. Он имеет только библиотеку компонентов (плохо поддерживаемые компоненты с префиксом hx
, также известные как «Faces Client Framework»). WSAD / RAD поставляется с Sun JSF RI (Mojarra) в качестве стандартной реализации JSF, хотя обычно это сильно устаревшая версия. Убедитесь, что вы держите его в курсе.