【问题标题】:"No records found" doesn't take conditionally rendered column of p:dataTable into account“未找到记录”不考虑有条件呈现的 p:dataTable 列
【发布时间】:2015-08-26 21:33:07
【问题描述】:

我目前在使用 PrimeFaces 4.0 的 dataTable 中的列的呈现属性存在一个小问题。我的表中有一个不应该总是显示的列,所以我使用了它的 rendered 属性并从我的支持 bean 中获取值。这是第 6 列也是最后一列。 dataTable 位于 p:dialog 中,该对话框将显示在方法的末尾。

rendered 属性似乎可以正常工作,因为当 showColumn 为 false 时,该列将不会显示,反之亦然,但存在问题。如图所示,“未找到记录”。消息似乎直到最后一列才能到达。当我尝试删除呈现的属性或手动将其设置为 true(不使用支持 bean 值)时,“未找到记录”。消息将按预期到达最后一列。

包含这些元素的整个对话框/表单似乎在 ajax 请求后正确更新。

Backing Bean 方法:

public void getStatus(final MyClass foo, boolean showColumn) {

    updateForm(foo);
    setShowColumn(showColumn);

    RequestContext.getCurrentInstance().execute("dailyStatus.show();");
}

xhtml 中的列部分:

<p:column headerText="Problematic Column" styleClass="tablecenter" rendered="#{myMBean.showColumn}">
    <p:commandLink id="view"
        action="#{myMBean.doSomething}" update="@form"
        rendered="#{obj.status.equals('FAILED')? 'true' : 'false'}"
        onclick="spin_start()" oncomplete="spin_stop()">
        <h:graphicImage name="images/restart.png" styleClass="icon" />
    </p:commandLink>
</p:column>

如表所示:

【问题讨论】:

  • 您是否尝试过 PrimeFaces 11.6 而不是当前的 0.9 版本?
  • 0.9 版本?你怎么知道?我实际上正在使用 Primefaces 4.0
  • 现在很清楚了,我假设您尝试了更新的版本?幽灵狩猎(寻找已经在新版本中修复的东西)不是我们的爱好之一 ;-)

标签: jsf primefaces datatable tablecolumn conditional-rendering


【解决方案1】:

对于 PrimeFaces 4.0,有一个“解决方案”,我使用 jQuery 对问题进行了 hack-ish 修复。对于最近的 PrimeFaces 版本,这已经修复

当需要显示动态列时,我在支持 bean 中使用标志,然后调用此方法。 (并且数据表的列表应该为空或空,如问题中所述)

RequestContext.getCurrentInstance().execute("$('[id=\"myForm:myDataTable\"] tr.ui-widget-content td').attr('colspan', 6);");

这会强制标题行之后的行上的单个 td 的 colspan 到达最后一个标题列。希望这对以后遇到此问题的其他人有所帮助!

【讨论】:

  • 这可能是古代 PrimeFaces 版本中的问题。在最近的版本中,这不是问题。
猜你喜欢
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 2022-02-16
  • 2021-08-20
  • 1970-01-01
相关资源
最近更新 更多