2012-01-12 53 views
0

我刚在应用程序中发现了一个奇怪的行为。Databable在tabpanel中的非活动选项卡中初始化值

我们有一个丰富的:tabPanel switchType =“ajax”带有多个选项卡。每个选项卡都包含一个rich:dataTable和一个带有a4j:form的编辑表单。

现在,当我们请求页面时,第一个选项卡被渲染并且数据表被初始化。到现在为止还挺好。 用户现在可以单击编辑链接(a4j:commandLink)来重新编辑所选实体的编辑表单,并且表单被正确地重新编辑。

但是:除此之外,我们从其他选项卡上的数据表中获取查询...即使选项卡不活动,富数据表也会初始化。由于选项卡处于非活动状态而未呈现 奇怪的是,如果我使用普通的h:dataTable,问题就会消失,即没有为此结果列表提取结果列表。

到目前为止,我有两个解决方法:

  1. 如果我使用限于列表上EDITLINK似乎处理部分工作正常,但是这将意味着,我们要适应所有CommandButton控件/链接和全球消息停止工作,如果我不包括它的ID到重新呈现属性...

  2. 我可以选择的选项卡绑定到后台bean,并以S仅渲染活动标签的内容:片段

虽然第二种解决方案非常简单,现在我正在使用这个解决方案,但我仍在寻求解释。

有没有人遇到过这种行为,并且对此有何解释?

感谢 马丁

回答

0

我们确实有这个问题,在进行任何操作阿贾克斯几乎所有的组件才能得到渲染。

我们解决了这个问题,通过购买< A4J加入limitRender = “true” 属性的组件和周边元件:outPutPanel axajRender = “假”/> <丰富:消息ajaxRendered = “假”/>。

但是,rich:tabPanel具有属性limitRender =“true”,如果不使用它,它不会显示任何差异。

还记得要使用< a4j:queue ignoreDupResponses =“true”/>作为帮助优化Ajax请求的最佳实践。在表单中使用此标签。

0

使用<a4j:region>内部标签限制jsf树处理

相关问题