我有一個數據表,我要添加一個新行。這樣做時出現以下錯誤 javax.servlet.ServletException:啓用選擇時,DataModel必須實現org.primefaces.model.SelectableDataModel。Primefaces:向數據表中添加一個新行給出錯誤:當啓用選擇時,DataModel必須實現org.primefaces.model.SelectableDataModel
我該如何解決我的問題?
這是我的XHTML
<h:commandLink action="#{workOrderDetail.addOrderItem}" >
<img src="${path.staticRootUrl}images/add.png" border="0" alt="${msg.workorderdetail_neworderitem}" title="${msg.workorderdetail_neworderitem}"/>
</h:commandLink>
<p:dataTable styleClass="ptable100" id="orderItems" var="orderItem" value="#{workOrderDetail.orderItems}" width="100%" height="200" widgetVar="results"
emptyMessage="#{msg.all_lists_no_records_found}" selection="#{workOrderDetail.selectedOrderItem}" selectionMode="single" onRowSelectUpdate=":detail:sub"
rowKey="#{orderItem.id}"
<p:ajax event="rowSelect" update=":detail:sub" />
,這是我的豆代碼
List<IMWSOrderItem> orderList = null;
public void addOrderItem() throws MWSException {
IMWSOrderItem newOrderItem = getWorkOrder().getMWSOrder().getMWSOrderItem_Set().getNewMWSOrderItem();
getWorkOrder().getMWSOrder().getMWSOrderItem_Set().addMWSOrderItem(newOrderItem);
orderList = null;
}
public List<IMWSOrderItem> getOrderItems() throws MWSException {
if (orderList == null) {
orderList = new ArrayList(Arrays.asList(getWorkOrder().getMWSOrder().getMWSOrderItem_Set().getMWSOrderItems()));
}
return orderList;
}
public IMWSOrderItem getSelectedOrderItem() {
return selectedOrderItem;
}
public void setSelectedOrderItem(IMWSOrderItem newSelectedOrderItem) {
this.selectedOrderItem = newSelectedOrderItem;
}
哪個PF版本?將'rowKey'屬性設置爲指向'var'對象的唯一標識符應該可以解決它,但是您已經設置了它。 – BalusC
PrimeFaces 3.2。我知道,我必須添加它,因爲一開始行選擇不起作用。但現在工作正常。在頁面的單獨部分中顯示每行的詳細信息。但是,添加新行時失敗。奇怪。 – roel
好的,發現問題了。添加新項目時,其ID默認爲空,並且該ID用作rowkey。所以我在添加一個新的ID時將其初始化爲-1,並且它工作正常。 – roel