【发布时间】:2014-12-12 09:18:45
【问题描述】:
我已关注 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 数据库中没有任何变化.. 有人可以帮帮我吗?
【问题讨论】:
-
代码看起来是对的,你检查
Article f的值了吗?也许你在formationFacade.update(f);代码行有错误? -
感谢@giaffa86 的回复.. 当我放一个 **System.out.println("budget de la formation :: : "+f.getBudget()); ** 我得到了旧值,我不认为错误出在更新方法中,因为如果我不使用 onRowEdit,它可以正常工作。我迷路了,因为我看不到我的问题在哪里
-
好的。您是否将 dataTable 包装到
h:form中?这是我看到的唯一问题。你称你的数据表为“表格”,可能你错了。每个输入组件必须在表单内 -
是的,我的 dataTable 在
h:form内...即使我在 inputText 中写了一个新值,它也不会改变任何东西..实际上我与 primefaces 展示的唯一区别是我的 dataTable 填充了数据库中的值列表,而不是静态值列表。我不知道是否应该对这种方法进行任何更改? -
如果
allArticles被正确设置为bean属性,则静态填充和动态填充没有区别。
标签: jsf jsf-2 primefaces