我目前在使用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>
如表中所示:
答案 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到达最后一个标题列。希望这有助于将来遇到此问题的其他人!