无法在PrimeFaces中使用OnRowEdit编辑数据表中的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在PrimeFaces中使用OnRowEdit编辑数据表中的值相关的知识,希望对你有一定的参考价值。

我已经跟随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>

在豆子里:

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数据库中没有变化..有人能帮帮我吗?

答案

有一件事是奇怪/错误的,可能会或可能不是你问题的原因,但我会建议修复。从这个update=":form:msgs"我假设你有一个像<h:form id="form"><p:growl id="msgs"这样的封闭标签。另一方面,你重复id="form"内的<p:dataTable id="form"。重复id确实是错误的,但我不确定它是否是你问题的原因

另一答案

首先,你必须提供值为的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" />

以上是关于无法在PrimeFaces中使用OnRowEdit编辑数据表中的值的主要内容,如果未能解决你的问题,请参考以下文章

无法阻止Primefaces民意调查

JSF 2.0 无法从 primefaces 呈现对话框

无法在primefaces中动态更改按钮href

PrimeFaces commandButton 无法导航或更新

PrimeFaces语言环境无法正常工作

Primefaces:fileUpload显示Facesmessage无法正常工作