gpt4 book ai didi

jsf - Primefaces 内联编辑数据表不起作用

转载 作者:行者123 更新时间:2023-12-05 08:00:52 24 4
gpt4 key购买 nike

我试图提供一种可能性来内联编辑带有 primefaces 的数据表的一行,但它似乎无法正常工作。我可以直观地编辑这些值,但是当我单击保存图标时,它不会更新更改后的值...

代码如下:

数据表:

<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);
}
}
}

看起来像这样: Overview of the datatable

如您所见,每个单元格的默认值为 0。如果我将值(如图所示)更改为 f.e. 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 但失败了

提前致谢,谢拉

最佳答案

检查您的实体,也许某些验证未考虑或数据库中的验证,我解决了将 nullable=true 放入实体的列并在相应表的某些字段中允许空值的问题。如果您的数据发生冲突,某些限制将不起作用。

关于jsf - Primefaces 内联编辑数据表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16873677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com