Java Primefaces数据表单元格编辑不';t更新
我有一个带单元格编辑的primefaces数据表,它在视图中的布尔变量上切换 我有三个问题:Java Primefaces数据表单元格编辑不';t更新,java,jsf,primefaces,datatable,tablecelleditor,Java,Jsf,Primefaces,Datatable,Tablecelleditor,我有一个带单元格编辑的primefaces数据表,它在视图中的布尔变量上切换 我有三个问题: 在编辑模式下,我更改一个值,然后单击页面上的“保存”按钮,它不会保留新值,如果我先单击页面上的其他位置,然后单击“保存”,它将保留该值。如果您先单击“保存”,我需要它来保留值 如果我编辑了一个单元格,它是一个输入文本,我点击了该字段,现在它是一个输出文本,直到我再次点击它。我希望字段在编辑模式下看起来像输入文本 单击save按钮时,backing方法将editable boolean设置为false,页
<p:dataTable value="#{view.LineItems}" var="lineItem" rowKey="#{lineItem.lineItemId}"
resizableColumns="false" editable="#{view.editable}" editMode="cell"
editingRow="#{view.editable}" id="requestLineItemsTable">
<p:ajax event="cellEdit" listener="#{view.cellEdited}" immediate="true" update="@this" />
<p:column styleClass="centerColumnData" headerText="Item Name" style="width: 140px;">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{lineItem.title}"/>
</f:facet>
<f:facet name="input">
<h:inputText value="#{lineItem.title}"/>
</f:facet>
</p:cellEditor>
</p:column> ...
下面是与datatable相同的.xhtml页面上的保存和编辑按钮
<p:commandLink process="@this"
action="#{view.changeModeToEdit}"
update="@form"
rendered="#{!view.editMode">
<h:graphicImage library="images" name="edit20.png" title="#{__Common.edit}"
style="height: 15px; width: 15px;"/>
</p:commandLink>
<components:linkWithSpinner linkStyle="margin-right: 20px;" loadingImageStyle="margin-right: 20px;"
linkStyleClass="activeButton saveButtonRequestDetails" loadingImageStyleClass="saveButtonRequestDetails"
linkText="#{__CommonButton.save}"
process="@form" update="@form"
actionMethod="#{view.updateRequest()}"/>
view.updateRequest()将可编辑设置为false。我正在使用Primefaces 4.0,所以我找到了解决这些问题的方法。我的重点是使用内置的编辑表,但是您可以只使用普通的datatable,列可以包含输入文本字段。那么你就不必担心我上面问题中的大部分问题了。如果您需要在编辑视图和非编辑视图之间切换,那么我仍然不知道如何完全修复它,除了在您的文件中有两个带有呈现标记的数据表外,但是您正在复制表一个带有输入文本字段,另一个带有输出文本字段,这并不是最好的方法。我更新到primefaces 5,并修复了问题3,然后为了解决问题1,我必须将async=“true”添加到p:ajax中,现在它不会在单击保存后尝试运行ajax。既然ajax调用是异步的,我需要彻底地测试这一点。
<p:commandLink process="@this"
action="#{view.changeModeToEdit}"
update="@form"
rendered="#{!view.editMode">
<h:graphicImage library="images" name="edit20.png" title="#{__Common.edit}"
style="height: 15px; width: 15px;"/>
</p:commandLink>
<components:linkWithSpinner linkStyle="margin-right: 20px;" loadingImageStyle="margin-right: 20px;"
linkStyleClass="activeButton saveButtonRequestDetails" loadingImageStyleClass="saveButtonRequestDetails"
linkText="#{__CommonButton.save}"
process="@form" update="@form"
actionMethod="#{view.updateRequest()}"/>