Заголовок ## Мы используем Primefaces 6.2 с JSF2.1.0.
наше определение данных приведено ниже в xhtml.
<p:dataTable id="dataTable" var="datatable" style="min-height:450px !important;"
widgetVar="searchDataTable" resizableColumns="false" paginatorAlwaysVisible="false"
styleClass="ui-datatable-ver-scroll datatable-wrap-column"
filteredValue="#{advSearchAction.filteredSearchList}"
value="#advSearchAction.searchValueBeanLazyDataModel}" paginator="true"
rowKey="#{datatable.ROWID}" filterEvent="change" rows="#{sessionScope['SRGRID_ROWS']}"
lazy="true" selection="#{advSearchAction.selectedRecordArr}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="# {commonmsg.searchDataTable$rowsPerPageTemplate}"
paginatorPosition="bottom">
Здесь все данные успешно заполняются вdatatable, и если мы выбираем datarow, то он генерирует исключение нулевого указателя.
См. ошибку ниже.
15: 15: 10,441 INFO [javax.enterprise.resource.webcontainer.jsf.context] (http-localhost-127.0.0.1-85-2) java.lang.NullPointerException: java.lang.java: 67) [classes:] at com.iii.orn11j.advsearch.SearchValueBeanLazyDataModel.getRowData (SearchValueBeanLazyDataModel.java:1) [классы:] в org.primefaces.component.datatable.DataDataTa.Table.45).[primefaces-6.2.jar:] на org.primefaces.component.datatable.feature.SelectionFeature.decodeSingleSelection (SelectionFeature.java:75) [classes:] на org.primefaces.component.datatable.feature.SelectionFeature.decode (SelectionFeature.java:57) [classes:] в org.primefaces.component.datatable.DataTableRenderer.decode (DataTableRenderer.java:71) [primefaces-6.2.jar:] в javax.face.component.UIComponentBase.decode (UIComponentBase.java:787) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar: 2.0.0.Final]
Мой Вызов метода SearchValueLazyBeanDataModel выглядит следующим образом:
@Override
public SearchValueBean getRowData(String rowKey) {
final List<SearchValueBean> rows = (List<SearchValueBean>)getWrappedData();
for (SearchValueBean SearchValueBean : rows) {
if (SearchValueBean.getROWID().equals(rowKey))
return SearchValueBean;
}
return null;
}
Здесь идет идентификатор строки, переданный из xhtml, и во время метода decodeSingleSelection () класса SelectionFeature метод данных getRowData()
возвращает значение null, а исключение NullPointerException -выкинут из вызывающей части.
Примечание: мы настроили SelectionFeature.java из jar primefaces, и ниже приведена часть ошибки моего кода при отладке.
void decodeSingleSelection(DataTable table, String selection) {
if (ComponentUtils.isValueBlank(selection)) {
table.setSelection(null);
} else {
table.setSelection(table.getRowData(selection));
}
}
Может кто-нибудь помочь, пожалуйстаменя в этом отношении.