【发布时间】:2011-09-09 16:03:36
【问题描述】:
我有一个表格,其中一个列包含一个下拉列表(HtmlSelectItems 组件)。 对于此表中的任何给定行,我希望能够根据特定的应用程序条件在运行时显示或隐藏下拉列表。
我在这种情况下的解决方案是使用 JSF2.0 实现提供的组件的预渲染事件监听器机制。基本上在 JSF 页面中,我为 HtmlSelectItems 组件(位于 h:column 中)分配了一个 id,并使用预渲染 f:event 元素对其进行了设置。 f:event 指向我的一种方法,该方法接收组件 ID 并对其进行处理。
我的问题是 HtmlSelectItems 实例在所有表行之间共享,如果说我在一个下拉列表组件上调用 HtmlSelectItems.setRender(false),则所有后续行都将停止显示下拉列表。事实上,一旦在下拉列表中调用第一个 setRender(false),f:event 预渲染监听器就会停止调用
我可以理解在表格行之间共享一个 HtmlSelectItems 实例这一事实 对整体性能有积极影响,但不应该在每一行重新初始化这个组件实例吗?
非常感谢您在这方面的任何澄清。
【问题讨论】:
标签: jsf-2