наше определение datatable выглядит следующим образом в 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">
Здесь все данные успешно заполняются в таблице данных, и если мы выбираем строку данных, то возникает исключение нулевого указателя.
См. ошибку ниже.
15:15:10,441 INFO [javax.enterprise.resource.webcontainer.jsf.context] (http-localhost-127.0.0.1-85-2) java.lang.NullPointerException: java.lang.NullPointerException at com.iii.orn11j.advsearch.SearchValueBeanLazyDataModel.getRowData(SearchValueBeanLazyDataModel.java:67) [classes:] at com.iii.orn11j.advsearch.SearchValueBeanLazyDataModel.getRowData(SearchValueBeanLazyDataModel.java:1) [classes:] at org.primefaces.component.datatable.DataTable.getRowData(DataTable.java:1445) [primefaces-6.2.jar:] at org.primefaces.component.datatable.feature.SelectionFeature.decodeSingleSelection(SelectionFeature.java:75) [classes:] at org.primefaces.component.datatable.feature.SelectionFeature.decode(SelectionFeature.java:57) [classes:] at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:71) [primefaces-6.2.jar:] at javax.faces.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;
}
Здесь приходит rowid, переданный из xhtml, и во время метода decodeSingleSelection() класса SelectionFeature метод данных getRowData() возвращает значение null, а из вызывающей части выдается исключение NullPointerException.
Примечание: мы настроили файл SelectionFeature.java файла jar и ниже приведена ошибка моего кода при отладке.
void decodeSingleSelection(DataTable table, String selection) {
if (ComponentUtils.isValueBlank(selection)) {
table.setSelection(null);
} else {
table.setSelection(table.getRowData(selection));
}
}
Может ли кто-нибудь помочь мне в этом отношении.
Прочтите Как спросить и минимальный воспроизводимый пример. И ошибка возникает в методе класса, который, как вы говорите, вы настроили, но вы не показываете этот код? И вы отлаживали, где именно возвращается «ноль», что приводит к NPE? Пожалуйста, сузьте причину и улучшите код в вопросе. В противном случае помочь практически невозможно
Да . Он работает нормально без спокойствия.
То есть вы отлаживали запросы от клиента к серверу с сереном и без и не заметили никаких отличий? И что такое ноль? Сузьте это
Никаких различий я не нашел. Но table.getRowData(selection) возвращает нулевое значение и кажется, что в Datatable нет данных.
Затем попробуйте найти, где он установлен (среда IDE сможет найти ссылки), установите точку останова и посмотрите, не установлена ли она при использовании безмятежности, но установлена, когда она не используется... отладка...
На экране я вижу данные, доступные в таблице данных. но когда дело доходит до SelectionFeature, он теряет данные. То же самое работает в 5.2 без спокойствия
это отлаживается с помощью IDE (Eclipse)
Затем проверьте/отладьте, что устанавливает его на ноль... И где... И отображение - это другое действие, чем отправка... А 5.2 без безмятежности? Как насчет 6.2 без безмятежности
И еще... минимальный воспроизводимый пример пожалуйста.... Также читайте stackoverflow.com/tags/jsf/info
А если вы сомневаетесь, действительно ли вы считаете, что это проблема Serenity, спросите на форуме Serenity: forum.primefaces.org/viewforum.php?f=73
Удалив банку безмятежности, у вас возникла такая же проблема. так что не надо общаться безмятежность форума. Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Итак, если вы не используете безмятежность, это работает? А с PF 6.1 или 7.0RC1 работает?