【问题标题】:Rendering a data-table only when the bean returns a list仅当 bean 返回列表时才呈现数据表
【发布时间】:2013-07-29 13:33:12
【问题描述】:

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

JSF-2.0,RichFaces-4 是我用的。

【问题讨论】:

  • 发布您的代码以便我们查看。

标签: jsf jsf-2 richfaces


【解决方案1】:

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

你可以这样做:

rendered="#{not empty listObject}"

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

希望对您有所帮助。

【讨论】:

  • 你不是说rendered。在richfaces 4 docs.jboss.org/richfaces/latest_4_X/vdldoc/rich/dataTable.html 中没有<rich:dataTable>render 属性@
  • 抱歉,它已渲染。在从 jsf 切换到 vaadin/gwt 的那一刻。如此丰富的面孔4,我没有更多地触及表面。
  • 迟到了。但是问题解决了。我将数据表包装在 中,并向其中添加了渲染属性。我想当出现“渲染”这个问题时,我们总是可以考虑包装它并尝试渲染它,而不是包装中的组件。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 2019-09-16
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      相关资源
      最近更新 更多