我试图使嵌套(通过行扩展)数据表可编辑,这是另一个可编辑数据表的内部。它似乎与ajax rowEdit事件有关。当我只有一个数据表可编辑时,例如注释掉它工作的嵌套ajax标签。但是,当我尝试使用它时,它返回一个错误说:
找不到方法:com.aglabexpress.Admin.Billing.CompleteInvoiceController@1146df77.editInvoiceItem(javax.faces.event.AjaxBehaviorEvent)"
这是因为双重ajax事件吗?
如何在保持两个表格可编辑的同时纠正这个问题?
HTMLX:
<h:form id="mainForm" >
<p:dataTable id="mainFormTable" editable="true" value="#{completeInvoiceController.labNumberBill}" var="lab" paginator="true" rows="10" rowStyleClass="#{lab.colorStatus}">
<p:ajax event="rowEdit" listener="#{completeInvoiceController.editBill}" />
<p:column>
<p:rowToggler/>
</p:column>
...
...
<p:column headerText="Date" footerText="Date">
<p:cellEditor>
<f:facet name="output">
<p:outputLabel value="#{lab.creationDateString}" />
</f:facet>
<f:facet name="input">
<p:calendar value="#{lab.creationDate}" />
</f:facet>
</p:cellEditor>
</p:column>
...
...
<p:column headerText="Edit">
<p:rowEditor />
</p:column>
<p:rowExpansion>
<p:dataTable value="#{lab.invoiceItems}" var="item" editable="true">
<p:ajax event="rowEdit" listener="#{completeInvoiceController.editInvoiceItem}" />
...
...
<p:column headerText="Description" footerText="Description">
<p:cellEditor>
<f:facet name="output">
<p:outputLabel value="#{item.description}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{item.description}" />
</f:facet>
</p:cellEditor>
</p:column>
...
...
<p:column headerText="Edit">
<p:rowEditor />
</p:column>
</p:dataTable>
</p:rowExpansion>
豆
public void editInvoiceItem(RowEditEvent event){
InvoiceItemConstructor itc = (InvoiceItemConstructor) event.getObject();
if(cih == null){
cih = new CompleteInvoiceHelper();
}
cih.updateItem(itc);
}
public void editBill(RowEditEvent event){
CompleteInvoiceLabNumberBill bill = (CompleteInvoiceLabNumberBill) event.getObject();
if(cih == null){
cih = new CompleteInvoiceHelper();
}
cih.updateBill(bill);
}
答案 0 :(得分:1)
您需要将嵌套的数据表事件方法签名替换为
public void editInvoiceItem(javax.faces.event.AjaxBehaviorEvent event)
这是因为双重ajax事件吗?
是。这是known issue(最初是针对嵌套的p:tabView
报告的),自PrimeFaces 5.0以来似乎已修复。
您可以在PrimeFaces forum
的主题(2013年7月)中找到更多信息