【发布时间】:2011-10-05 12:57:12
【问题描述】:
我正在使用带有 JSF2.0 的 Primefaces。 我有一个嵌套的数据表,只有在某些布尔标志(safeToLoadDataTable)为真时才想渲染它,但这不会发生,当我打开页面时 record.columnList 抛出 NullPointerException 因为它显然尚未初始化。我在按下同一页面的搜索按钮后填写这些列表。
我的代码:
<p:panel rendered="#{enastrSearch.safeToLoadDataTable}">
<p:dataTable id="tableData" var="record" value="#{enastrSearch.recordsList}" >
<p:column>
<p:dataTable var="column" value="#{record.columnList}">
<p:column>
<f:facet name="header">
Name
</f:facet>
<h:outputText value="#{column.columnName}" />
</p:column>
<p:column>
<f:facet name="header">
Value
</f:facet>
<h:outputText value="#{column.columnValue}" />
</p:column>
</p:dataTable>
</p:column>
</p:dataTable>
</p:panel>
为什么渲染属性不起作用?而且我还想知道使用嵌套数据表是否可以。 谢谢!
更新:
我的旗帜是这样的:
private boolean safeToLoadDataTable;
public boolean isSafeToLoadDataTable() {
if(recordsList!=null && !recordsList.isEmpty()){
safeToLoadDataTable = true;
}else{
safeToLoadDataTable = false;
}
return safeToLoadDataTable;
}
无论如何,我已经尝试过即使返回 false 并且仍然呈现面板。
【问题讨论】:
-
你的 managedbean 是什么样子的?
-
那么,当你使用
<p:panel rendered="false">时,面板仍然显示?你用的是什么PF版本? -
你试过
<p:panel rendered="false">吗? -
不,我没试过
...我说的是isSafeToLoadDataTable方法返回。 -
我还有一个问题:如何仅在一行中显示列表成员?因为如果我使用 dataTable 和 column,会自动生成行,如果我使用 p:row 它不起作用...
标签: java jsf-2 primefaces