我一直在尝试渲染丰富的:dataTable,但是在条件渲染方面失败了。我只想在列表的大小(即从 DB 获取的支持 bean)大于零时才渲染它。
我使用的是 JSF-2.0、RichFaces-4。
您必须使用数据表的“渲染”属性。使用它,您可以定义组件是否呈现给客户端。因此,如果列表已填充,请通过 EL 检查。
您可以执行以下操作:
rendered="#{not empty listObject}"
一切都很好。我总是实现我的数据库查询方法永远不会返回 null,如果查询没有结果,我会返回一个空列表。这样我确定我永远不会得到一个空指针异常,我更喜欢显示一个空表。因为它更容易布局页面,当您确定表格始终存在时。
希望有帮助。
场景是我有一个 groupId ,我右键单击它。在上下文菜单上,我选择显示 CTN,然后它应该在数据表中呈现该组的所有 CTN。它从一个 JavaScript 调用开始,一旦我选择“显示 CTN”,我就会调用它。它负责将 GroupId 提供给 a4j:jsFunction。
<rich:dataTable value="#{ctnGrpMgmtController.ctnDetailsList}"
var="ctnVar" id="ctnTable" rows="5"
rendered="#{not empty ctnDetailsList}">
上面应该在下面的 a4j:jsFunction 执行之后呈现。
<a4j:jsFunction name="selectGroupForManagingCtns"
action="#{ctnGrpMgmtController.loadCTNsForAGroup}"
render="ctnListPanel,ctnTable">
<a4j:param name="name"
assignTo="#{ctnGrpMgmtController.groupId}" />
</a4j:jsFunction>
我必须按 F5 才能看到组件“ctnTable”,这是问题开始的地方。
看起来 a4j:jsFunction 上的属性名称是 reRender 而不是仅仅渲染。应该修复它。