“未找到任何记录”不会将p:dataTable的有条件渲染列考虑在内

时间:2015-06-11 09:16:55

标签: jsf primefaces datatable tablecolumn conditional-rendering

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

渲染属性似乎正常工作,因为当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>

如表中所示: As displayed on page

1 个答案:

答案 0 :(得分:1)

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

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

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

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