Предложите подходящий метод управления бинами в Richfaces

Сценарий такой. У меня есть богатый: tabPanel с примерно 5 вкладками. На первой вкладке есть файл rich:datatable. Когда я нажимаю на элемент первого столбца (a4j: commandLink), я получаю еще один богатый: datatable. Когда я нажимаю на элемент первого столбца (a4j: commandLink) этой таблицы, я меняю вкладку, где у меня есть другой rich: datatable, и происходит то же самое, что и выше. Ограничения из предыдущей вкладки используются для получения элементов для текущей. Если я нажму на вкладку напрямую, я получу все элементы, связанные с этой вкладкой. Каждый rich:datatable относится к разным таблицам. Каждая таблица взаимосвязана. Каждая вкладка относится к одному управляемому компоненту. Я использую спящий режим в бэкэнде.

Проблема начинается сейчас. Я не хочу, чтобы управляемые компоненты были основаны на сеансах или приложениях, поскольку необходимо хранить много переменных. Если я укажу область запроса, произойдет следующее. Первая таблица на вкладке отображается отлично, однако, когда я нажимаю на первый столбец, вторая таблица не использует все ограничения, поскольку областью действия является запрос, например, actionlistener. Что я должен сделать ?

Единственное, что я могу сделать, это определить один управляемый компонент для каждой таблицы. Или принудительно используйте область сеанса. Или есть другой способ? Пожалуйста помоги.

Спасибо.


person Prabhat    schedule 06.03.2011    source источник


Ответы (2)


Если вы уже используете JSF 2.0, используйте область просмотра. Это область, которая существует, пока вы взаимодействуете с одной и той же страницей (независимо от вкладки/сеанса браузера!).

Если вы все еще используете JSF 1.x, используйте область запроса с <a4j:keepAlive beanName="#{bean}" /> объявлено в представлении. Он ведет себя как область представления JSF 2.0.

person BalusC    schedule 06.03.2011
comment
В области просмотра сохраняется ли bean-компонент, если я меняю вкладку на панели вкладок? Как я уже упоминал, каждая вкладка является управляемым компонентом. Итак, что происходит, когда я меняю вкладку, так как когда я меняю вкладку, вид меняется? Тип переключателя TabPanel — клиент. - person Prabhat; 06.03.2011
comment
Ссылка на эти bean-компоненты в представлении с областью видимости. - person BalusC; 07.03.2011
comment
Спасибо, но я не это имел в виду. Если я даю область представления управляемого компонента, каждая вкладка ссылается на компонент. Когда я меняю вкладку на панели вкладок, сохраняются ли параметры или область действия для всего под тегом ‹f:view›? - person Prabhat; 07.03.2011
comment
Это не то, что я имел ввиду. Используйте один и тот же компонент для всех вкладок. Вы можете сделать каждый tab-бин свойством этого одного и того же bean-компонента. - person BalusC; 07.03.2011
comment
Спасибо. Rep++ :) И последнее, является ли принцип работы a4j:keepalive таким же, как расширенная область запроса Icefaces? - person Prabhat; 08.03.2011
comment
Пожалуйста. Извините, у меня нет полного представления о IceFaces, так как я им не пользуюсь. - person BalusC; 08.03.2011

Если вы используете Richfaces 3.0.0 или выше, вы можете аннотировать свой компонент с помощью @KeepAlive или вместо этого использовать тег <a4j:keepAlive beanName="#{bean}" />. Это эквивалент области представления в JSF 2.0.

person Maxim Manco    schedule 06.03.2011