“未找到记录”不考虑有条件呈现的 p:dataTable 列
Posted
技术标签:
【中文标题】“未找到记录”不考虑有条件呈现的 p:dataTable 列【英文标题】:"No records found" doesn't take conditionally rendered column of p:dataTable into account 【发布时间】: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 现在很清楚了,我假设您尝试了更新的版本?幽灵狩猎(寻找已经在新版本中修复的东西)不是我们的爱好之一 ;-) 【参考方案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 版本中的问题。在最近的版本中,这不是问题。以上是关于“未找到记录”不考虑有条件呈现的 p:dataTable 列的主要内容,如果未能解决你的问题,请参考以下文章
未找到记录时,mysqli_query 不返回 false [重复]