我对RichFace的(3.3.3)TabPanel有个疑问。我曾参与过使用TabPanel的两个项目。在每个项目上,我都注意到在不可见的选项卡上的组件仍然有其调用的“getter”方法。Rich TabPanel的getters在标签内容未呈现时调用
例如,第一片具有在一个数据表和任何时间请求从任何其他片(包括AJAX请求)被绑定到DataTable在第一选项卡仍具有豆制成它的吸气剂叫。
我认为会发生这种情况(即使该选项卡当前未在UI中呈现),因为该组件仍处于组件层次结构中?换句话说,所有组件都是父标签面板的子组件,因此每个请求都会被处理。即使它们不可见也是如此。
好吧......如果我的假设是真的,那么我需要一种方法来不有数据检索逻辑调用的未使用的标签。我读过关于懒惰加载数据的帖子(不把数据检索逻辑放在getter中),因为getter可能会被调用很多次。我正在尽力坚持这一点;我看到的问题是,即使我已经将绑定到表的bean(在选项卡上)与请求范围一起定义,并且getter将懒惰地加载表的数据,但bean会被实例化,并且数据(懒洋洋地),从其他选项卡的每个ajax请求。
有一种方法可以解决所有内容脱离RichFace的TabPanel并滚动我自己的问题。
我试着让绑定到表会话的bean作用域,并“缓存”getter返回的表的数据,但问题是没有生命周期方法绑定到当tab再次呈现时(通过手动点击选项卡或以编程方式选择选项卡)。
我会很感激任何建议。
好问题。我与我的标签面板完全一样的问题,但是当我尝试将一个服务器端方法(使用ajax支持)连接到ontabenter方法(为特定选项卡执行数据检索)时,我的方法不会被打中在所有。显然不是这样设计的?令人沮丧。 – Lisa 2013-10-29 05:21:12