【发布时间】:2012-01-22 01:35:41
【问题描述】:
我对 RichFace 的 (3.3.3) TabPanel 有疑问。我参与了两个使用 TabPanel 的项目。在每个项目中,我注意到不可见选项卡上的组件仍然调用了它们的“getter”方法。
例如,第一个选项卡在 in 上有一个数据表,并且任何时候从任何 其他 选项卡(包括 ajax 请求)发出请求时,绑定的 bean到第一个选项卡上的数据表仍然调用它的 getter。
我假设会发生这种情况(即使选项卡当前未在 UI 中呈现),因为组件仍在组件层次结构中?换句话说,所有组件都是父选项卡面板的子级,因此在每个请求上都会处理..即使它们不可见。
好的...如果我的假设成立,那么我需要一种方法来不为未使用的选项卡调用数据检索逻辑。我已经阅读了有关延迟加载数据(不在 getter 中放置数据检索逻辑)的帖子,因为可能会多次调用 getter。我正在尽力坚持这一点;我看到的问题是,即使我将绑定到表(在选项卡一上)的 bean 定义为请求范围并且 getter 懒惰地加载表的数据,bean 被实例化,并且数据从 other 选项卡的每个 ajax 请求中拉(懒惰地)。
必须有办法解决这个问题,即从 RichFace 的 TabPanel 中提取所有内容并滚动我自己的内容。
我尝试使bean绑定到表会所范围,并“缓存”getter返回表的数据,但问题有没有生命周期方法绑定到何时再次呈现(通过手动单击选项卡或以编程方式选择选项卡)。
如果有任何建议,我将不胜感激。
【问题讨论】:
-
好问题。我对我的选项卡面板有完全相同的担忧,但是当我尝试将服务器端方法(使用 ajax 支持)连接到 ontabenter 方法(为该特定选项卡进行数据检索)时,我的方法没有被命中一点也不。它显然不是为那样工作而设计的???令人沮丧。
标签: richfaces jsf-1.2 tabpanel