primfaces 6.2和serenity(datatable问题)

omhiaaxx  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(277)

标题##我们将PrimeFaces6.2与jsf2.1.0结合使用。

我们的数据表定义如下所示。

<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,那么它就会抛出null指针异常。
请参见下面的错误。
15:15:10,441信息[javax.enterprise.resource.webcontainer.jsf.context](http-localhost-127.0.0.1-85-2)java.lang.nullpointerexception:java.lang.nullpointerexception位于com.iii.orn11j.advsearch.searchvaluebeanlazydatamodel.getrowdata(searchvaluebeanlazydatamodel)。java:67)[课程:]com.iii.orn11j.advsearch.searchvaluebeanlazydatamodel.getrowdata(searchvaluebeanlazydatamodel。java:1)[类:]位于org.primefaces.component.datatable.datatable.getrowdata(datatable。java:1445)[primefaces-6.2.jar:]位于org.primefaces.component.datatable.feature.selectionfeature.decodesingleselection(selectionfeature)。java:75)[课程:]org.primefaces.component.datatable.feature.selectionfeature.decode(selectionfeature。java:57)[类:]位于org.primefaces.component.datatable.datatablerenderer.decode(datatablerenderer)。java:71)[primefaces-6.2.jar:]位于javax.faces.component.uicomponentbase.decode(uicomponentbase。java:787)[jboss-jsf-api 2.1\u 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传递的rowid,在selectionfeature类的decodesingleselection()方法中 getRowData() datatable的方法返回null,并且从调用部分抛出nullpointerexception。
注意:我们已经定制了primefacesjar的selectionfeature.java,下面是调试时代码的错误部分。

void decodeSingleSelection(DataTable table, String selection) {
    if (ComponentUtils.isValueBlank(selection)) {
        table.setSelection(null);
    } else {
        table.setSelection(table.getRowData(selection));
    }
}

在这方面谁能帮我一下吗。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题