0

我一直在尝试渲染丰富的:dataTable,但是在条件渲染方面失败了。我只想在列表的大小(即从 DB 获取的支持 bean)大于零时才渲染它。

我使用的是 JSF-2.0、RichFaces-4。

4

3 回答 3

1

您必须使用数据表的“渲染”属性。使用它,您可以定义组件是否呈现给客户端。因此,如果列表已填充,请通过 EL 检查。

您可以执行以下操作:

rendered="#{not empty listObject}"

一切都很好。我总是实现我的数据库查询方法永远不会返回 null,如果查询没有结果,我会返回一个空列表。这样我确定我永远不会得到一个空指针异常,我更喜欢显示一个空表。因为它更容易布局页面,当您确定表格始终存在时。

希望有帮助。

于 2013-07-29T13:46:01.713 回答
0

场景是我有一个 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”,这是问题开始的地方。

于 2013-07-29T16:33:50.747 回答
0

看起来 a4j:jsFunction 上的属性名称是 reRender 而不是仅仅渲染。应该修复它。

于 2013-07-31T09:37:39.073 回答