【发布时间】:2014-08-03 05:30:42
【问题描述】:
我有一个带有单元格编辑的 primefaces 数据表,它在视图中的布尔变量上切换。
我有三个问题:
- 在编辑模式下,我更改了一个值,然后单击页面上的保存按钮,它不会保留新值,如果我先单击页面上的其他任何位置,然后单击保存,它将保留该值。如果您先单击保存,我需要它来保留该值。
- 如果我编辑一个作为输入文本的单元格,然后单击该字段,则该字段现在是一个输出文本,直到我再次单击该字段。我希望该字段在编辑模式下看起来像输入文本。
- 当单击保存按钮时,支持方法将可编辑布尔值设置为 false,并且页面的其余部分服从,并且 dataTable 看起来也服从,但是如果您单击一个单元格,它将允许您对其进行编辑。
代码如下:
<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> ...
这是后端(还没有做任何事情)
public void cellEdited(CellEditEvent event)
{
Object oldValue = event.getOldValue();
}
这里是与数据表相同的 .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
【问题讨论】:
-
我更新到 primefaces 5 并修复了问题 3,然后修复问题 1 我必须将 async="true" 添加到 p:ajax 现在它不会在保存后尝试运行 ajax被点击。现在我需要彻底测试这个 ajax 调用是异步的。
标签: java jsf primefaces datatable tablecelleditor