gpt4 book ai didi

java - Primefaces 嵌套 dataTable 渲染问题

转载 作者:行者123 更新时间:2023-12-01 15:43:09 24 4
gpt4 key购买 nike

我正在将 Primefaces 与 JSF2.0 结合使用。我有一个嵌套的 dataTable,只有在某个 boolean 标志(safeToLoadDataTable)为 true 时才需要渲染它,但这不会发生,当我打开页面时 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;
}

无论如何,我尝试过即使 return false 并且面板仍然呈现。

最佳答案

when I open the page record.columnList throws NullPointerException because obviously it isn't yet initialized

除了返回列表属性之外,您不应在 getColumnList() 中执行任何其他操作。 getter 应该看起来像这样:

public List<Column> getColumnList() {
return columnList;
}

它不应包含任何其他代码。此属性的任何初始化都应在 bean 的(后)构造函数或操作(监听器)方法中完成。

<小时/>

与具体问题无关,我建议在 EL 中使用 empty 关键字,而不是那个笨拙的 boolean getter。

<p:panel rendered="#{not empty enastrSearch.recordsList}">

关于java - Primefaces 嵌套 dataTable 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com