primefaces datatable在触发操作时出现空指针异常

ev7lccsx  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(262)

我尝试使用datatable组件,但在selection属性中使用数组而不是对象这里是primefaces showcase中的示例
我的域名是efadoclabelmodel,我将cardatamodel(从showcase)更新为efadoclabelmodel这里是代码。

public EfaDocLabelModel() {
}
public EfaDocLabelModel(List<EfaDocLabelMatch> data) {
    super(data);
}
@Override
public EfaDocLabelMatch getRowData(String rowKey) {
      List<EfaDocLabelMatch> docLabelList = (List<EfaDocLabelMatch>) getWrappedData();
    for (EfaDocLabelMatch docLabel : docLabelList) {
        if (docLabel.getDoclabelId().toString().equals(rowKey)) {
            return docLabel;
        }
    }
    return null;
}
@Override
public Object getRowKey(EfaDocLabelMatch docLabel) {
    return docLabel.getDoclabelId();

}

当用户在datatable的页脚部分触发commandbutton时,在我的托管bean中,我尝试获取选定的行,但它给出了

java.lang.NullPointerException
at java.lang.reflect.Array.newArray(Native Method)
at java.lang.reflect.Array.newInstance(Array.java:70)
at org.primefaces.component.datatable.feature.SelectionFeature.decodeMultipleSelection(SelectionFeature.java:53)
at org.primefaces.component.datatable.feature.SelectionFeature.decode(SelectionFeature.java:39)
at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:53)

我可以从showcase中运行多个选择,它使用了cardatamodel,但是在我根据需要修改时使用了相同的结构。我发现了这个错误。
这是我的豆子

public class DocLabelBean implements Serializable {
private List<EfaDocLabelMatch> docLabelMatchList;
private EfaDocLabelMatch[] docLabelArray;

    public String updateLabel() {
    EfaDocLabelMatch[] selectedDocArray = getDocLabelArray();//I m sure I m 
    //getting error because selectedDocArray is null. 
    DTO result = new DTO();
    for (EfaDocLabelMatch docLabel : selectedDocArray) {
    }

以下是我的页面所需代码:

<p:dataTable emptyMessage="No Labeled Doc" 
 var="docLabel" value="#{docLabelBean.docLabelModel}" 
 selection="#{docLabelBean.docLabelArray}"> 
 <p:column selectionMode="multiple"  />
 <p:column headerText="Id" >  
 #{docLabel.doclabelId} 
 </p:column>  
 <p:column headerText="Doc No" >  
 #{docLabel.documentId}  
 </p:column>  
 <p:column headerText="Label Key" >  
 #{docLabel.docLabelKey}  
 </p:column>

和第页的commanbutton代码:

<p:commandButton value="Sil" icon="ui-icon-search"  
update="@form"  process="@form"
action="#{docLabelBean.updateLabel()}" />

我尝试了ajax=false和balusc提到的其他可能的错误原因,但是仍然无法解决这个问题,这里的问题是bug报告。我需要将选定的行分配给一个列表或数组,如果它是一个真正的bug,还有其他方法吗?

暂无答案!

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

相关问题