Предложите подходящий метод управления bean-компонентами в Richfaces - PullRequest
1 голос
/ 06 марта 2011

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

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

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 марта 2011

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

1 голос
/ 06 марта 2011

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

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

...