我正在尝试使用数据表组件,但在选择属性中使用数组而不是对象 这是来自 Primefaces 展示的示例
我的域名是EfaDocLabelModel,我将 CarDataModel(来自展示)更新为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();
}
当用户在数据表的页脚部分触发命令按钮时,在我的托管 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)
我可以从使用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 提到的其他可能的错误原因,但我仍然无法解决问题这是 错误报告。如果它是一个真正的错误,我需要将选定的行分配给列表或数组是否有任何替代方法?