我试图使用Primefaces为数据表格中的一行提供内联编辑的可能性,但似乎无法正常工作。我可以在视觉上编辑值,但当我点击保存图标时,它不会更新更改后的值...以下是代码:
数据表格:
它看起来像这样:
我错过了什么?:(
信息:我正在使用primefaces版本4.0(快照),但也尝试并失败了稳定版本3.5
提前致谢, Xera
数据表格:
<p:dataTable id="ticketTypePrices" var="priceCategoryTicketType"
value="#{EventInstanceController.priceCategoryTicketTypes}"
editable="true">
<p:ajax event="rowEdit" update="@this" listener="#{EventInstanceController.onEditPrices}" />
<p:ajax event="rowEditCancel" listener="#{EventInstanceController.onCancelPrices}" update="@this" />
<p:column headerText="Preiskategorie">
<h:outputText value="#{priceCategoryTicketType.priceCategory.name}" />
</p:column>
<c:forEach items="#{EventInstanceController.ticketTypes}" var="item">
<p:column headerText="#{item.name}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{priceCategoryTicketType.ticketTypes[item]}" />
</f:facet>
<f:facet name="input">
<p:inputText converter="bigDecimalConverter" value="#{priceCategoryTicketType.ticketTypes[item]}" style="width:50%" />
</f:facet>
</p:cellEditor>
</p:column>
</c:forEach>
<p:column style="width:3%">
<p:rowEditor />
</p:column>
</p:dataTable>
EventInstanceController.onEditPrices
public void onEditPrices(RowEditEvent event) {
PriceCategoryTicketType pctt = (PriceCategoryTicketType)event.getObject();
System.out.println(pctt.getPriceCategory().getName());
for(int i = 0; i < priceCategoryTicketTypes.size(); i++) {
PriceCategoryTicketType pctickettype = priceCategoryTicketTypes.get(i);
if(pctt.getPriceCategory().equals(pctickettype.getPriceCategory())) {
for(Map.Entry<TicketType, BigDecimal> entry : pctt.getTicketTypes().entrySet()) {
System.out.println("TicketType: " + entry.getKey().getName());
System.out.println("Price: " + entry.getValue());
}
priceCategoryTicketTypes.set(i, pctt);
}
}
}
它看起来像这样:
![数据表概述](https://istack.dev59.com/XFpOS.webp)
正如您所看到的,每个单元格的默认值为0。 如果我更改值(就像图片上那样)为30 25 20并点击保存行图标,这些值将变回0 0 0。
onEditPrices中的System.out.println结果如下:
INFO: TicketType: Standard
INFO: Price: 0
INFO: TicketType: AHV
INFO: Price: 0
INFO: TicketType: Student
INFO: Price: 0
我错过了什么?:(
信息:我正在使用primefaces版本4.0(快照),但也尝试并失败了稳定版本3.5
提前致谢, Xera