Jsf &引用;“未找到任何记录”;不';t将p:dataTable的有条件呈现列考虑在内

Jsf &引用;“未找到任何记录”;不';t将p:dataTable的有条件呈现列考虑在内,jsf,primefaces,datatable,tablecolumn,conditional-rendering,Jsf,Primefaces,Datatable,Tablecolumn,Conditional Rendering,我目前在使用PrimeFaces 4.0的dataTable中的列的呈现属性方面有一个小问题。我的表中有一列不应该总是显示,所以我使用了它的rendered属性,并从我的支持bean中获取值。这是第6列也是最后一列。dataTable位于p:对话框中,该对话框将显示在方法的末尾 呈现的属性似乎工作正常,因为当showColumn为false时,该列将不会显示,反之亦然,但存在一个问题。如图所示,“未找到任何记录”消息似乎直到最后一列才到达。当我尝试删除呈现属性,或手动将其设置为true(不使用b

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

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

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

支持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 4.0,有一个“解决方案”,我使用jQuery对问题进行了黑客式的修复。对于最近的PrimeFaces版本,这一问题已经解决

当需要显示动态列时,我在支持bean中使用标志,然后调用此方法。(如本期所述,datatable的列表应为null或空)


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

您是否尝试过PrimeFaces 11.6而不是当前的0.9版本?0.9版本?你怎么知道?我实际上使用的是Primefaces 4.0现在很清楚了,我想你试过更新的版本了吧?寻找幽灵(寻找arw已经在新版本中修复的东西)不是我们的爱好之一;-)这可能是古代版本中的一个问题。在最近的版本中,这不是一个问题。
RequestContext.getCurrentInstance().execute("$('[id=\"myForm:myDataTable\"] tr.ui-widget-content td').attr('colspan', 6);");