У меня есть вопрос о панели вкладок RichFace (3.3.3). Я работал над двумя проектами, в которых использовалась TabPanel. В каждом проекте я заметил, что компоненты, которые находятся на вкладках, которые не видны, по-прежнему вызывают свои методы «геттера».
Например, первая вкладка содержит таблицу данных, и каждый раз, когда с любой из вкладок другие делаются запросы (включая запросы ajax), компонент, связанный с таблицей данных, на первой вкладке все еще вызывается геттер.
Я предполагаю, что это происходит (хотя вкладка в настоящее время не отображается в пользовательском интерфейсе), потому что компонент все еще находится в иерархии компонентов? Другими словами, все компоненты являются дочерними элементами родительской панели вкладок и поэтому обрабатываются при каждом запросе... даже если они не видны.
Хорошо... если мое предположение верно, то мне нужен способ не вызывать логику извлечения данных для вкладок, которые не используются. Я читал сообщения о ленивой загрузке данных (не помещая логику извлечения данных в геттер), потому что геттеры могут вызываться много раз. Я делаю все возможное, чтобы придерживаться этого; проблема, которую я вижу, заключается в том, что, хотя у меня есть bean-компонент, привязанный к таблице (на первой вкладке), определенный с областью запроса, и геттер лениво загружает данные для таблицы, экземпляр bean-компонента создается, а данные pull (лениво) для каждого запроса ajax из других вкладок.
Должен быть способ обойти это, за исключением извлечения всего содержимого из панели вкладок RichFace и развертывания моего собственного.
Я попытался сделать bean-компонент привязанным к сеансу таблицы и «кэшировать» данные, которые геттер возвращает в таблицу, но проблема в том, что нет метода жизненного цикла для привязки, когда вкладка снова отображается (либо вручную щелкнув вкладку или программно выбрав вкладку).
Буду признателен за любые предложения.