Primefaces在单元格编辑数据表中,event.getNewValue()将旧值发送给bean

时间:2013-11-21 11:53:27

标签: java jsf jsf-2 primefaces

我正在尝试使用主要面孔的功能,允许用户编辑表格中的单元格数据。我已按照此链接实现它: Primefaces showcase

当我说编辑表格中的单元格时,输入的新值不会发送到bean。它仍然只显示旧值。

我的代码JSF:

<h:form id="testform">            
    <p:growl id="messages" showDetail="true" />  
 <p:outputPanel id="testContainer" deferred="true">          




   <p:remoteCommand name="oncompleteCellEdit" update="cars messages" />

   <p:dataTable id="cars" var="car" value="#{articlesbean.LMatpilotaccess1}" editable="true" editMode="cell" widgetVar="carsTable" update=":cars">  

       <f:facet name="header">  
            Matériel du pilotage et accessoires 
        </f:facet>  

   <p:ajax event="cellEdit" listener="#{articlesbean.onCellEdit}"   oncomplete="oncompleteCellEdit()"    update=":testform:messages" />

        <p:column headerText="Serie" style="width:25%">                

               <p:cellEditor >  
                   <f:facet name="output"><h:outputText value="#{car.serie}" /></f:facet>  
                   <f:facet name="input"><p:inputText id="modelInput16" value="#{car.serie}" style="width:96%"/></f:facet>  
               </p:cellEditor>  
         </p:column>  


   <p:column headerText="Cap" style="width:25%">                

               <p:cellEditor >  
                   <f:facet name="output"><h:outputText value="#{car.cap}" /></f:facet>  
                   <f:facet name="input"><p:inputText id="modelInput15" value="#{car.cap}" style="width:96%"/></f:facet>  
               </p:cellEditor>  
         </p:column> 

    </p:dataTable>  

 </p:outputPanel> 

    </h:form>

我的代码bean

    @ManagedBean(name="articlesbean")

    @ViewScoped
    public class ArticlesBean implements Serializable{

        @Inject
        private ArticlesDAO articleDAO;
        private Matpilotaccess1 matpilotaccess1;

    public void onCellEdit(CellEditEvent event) {  
          Object oldValue = event.getOldValue();  
           Object newValue = event.getNewValue();

           System.out.println("/////"+(event.getNewValue());
           System.out.println("/////"+(event.getOldValue());

         FacesContext context = FacesContext.getCurrentInstance();
          Matpilotaccess1 mpltiacc  = context.getApplication().evaluateExpressionGet(context, "#{mpltiacc}", Matpilotaccess1.class);
          articleDAO.Updatetable(mpltiacc);
              }
/////////Getters and Setters
    }

的结果
System.out.println("/////"+(event.getNewValue());
System.out.println("/////"+(event.getOldValue());

我在两种情况下都得到了旧的价值!!!

有谁能告诉我如何获得新值?我使用的是Jboss 7和primefaces4谢谢

1 个答案:

答案 0 :(得分:-3)

您需要使用@SessionScoped注释来注释您的bean。