我已经跟随PrimeFaces展示使用行编辑数据表,但我不知道它为什么不更新数据。
这是我的数据表:
<p:dataTable id="tab" var="art" value="#{myMB.allArticles}" editable="true" style="margin-bottom:20px">
<f:facet name="header">
</f:facet>
<p:ajax event="rowEdit" listener="#{myMB.onRowEdit}" update=":form:msgs" />
<p:ajax event="rowEditCancel" listener="#{myMB.onRowCancel}" update=":form:msgs" />
<p:column headerText="Name ">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{art.name}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput" value="#{art.name}" style="width:100%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Budget">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{art.budget}" /></f:facet>
<f:facet name="input"><p:inputText value="#{art.budget}" style="width:100%" label="Budget"/></f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:32px">
<p:rowEditor />
</p:column>
</p:dataTable>
并在bean中:
public void onRowEdit(RowEditEvent event ) {
Article f = (Article) event.getObject();
formationFacade.update(f);
FacesMessage msg = new FacesMessage("Article Edited", ((Article) event.getObject()).getName());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
我已经看到了这一点:link但它对我不起作用我在编辑后得到了旧值,并且我在may数据库中没有变化..有人可以帮我吗?
答案 0 :(得分:0)
有一件事是奇怪/错误的,可能会或可能不是你问题的原因,但我会建议修复。从update=":form:msgs"
开始,我假设你有一个封闭的标签,如<h:form id="form"><p:growl id="msgs"
。另一方面,你重复id="form"
内的<p:dataTable id="form"
。重复id确实是错误的,但我不确定它是否是你问题的原因
答案 1 :(得分:0)
首先,您必须向EditMode
参数提供
CellEdit
或RowEdit
。
第二秒,如果您希望编辑数据表的简单方法是
,则可以进行这样的编辑而没有事件modifyYourModel(Model x){
// call your function to modify
}
在数据表中,您可以执行此操作
<p:dataTable id="tab" var="art" value="#{myMB.allArticles}" editable="true" EditMode="rowEdit" style="margin-bottom:20px">
<f:facet name="header">
</f:facet>
<p:ajax event="rowEdit" listener="#{myMB.modifyYourModel(art)}" update=":form:msgs" />
<p:ajax event="rowEditCancel" listener="#{myMB.onRowCancel}" update=":form:msgs" />
答案 2 :(得分:0)
使用您的ID代替:form,:msgs。
<p:ajax event="rowEdit" listener="#{myMB.onRowEdit}" update="messages tab" />
<p:ajax event="rowEditCancel" listener="#{myMB.onRowCancel}" update="messages tab" />
此外,您还必须按编辑对象更新列表“ allArticles”。