Я использую Primefaces с JSF2.0.
У меня есть вложенный dataTable, который я хочу отобразить, только если какой-то логический флаг (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>
Почему не работает визуализированный атрибут? И мне также было интересно, если использование вложенных dataTable нормально.
Спасибо!
UPDATE:
Мой флаг выглядит так:
private boolean safeToLoadDataTable;
public boolean isSafeToLoadDataTable() {
if(recordsList!=null && !recordsList.isEmpty()){
safeToLoadDataTable = true;
}else{
safeToLoadDataTable = false;
}
return safeToLoadDataTable;
}
Во всяком случае, я пытался даже с возвращением false, и все равно панель отображается.