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

标签 java jsf jsf-2 primefaces

我正在尝试使用 prime faces 的功能,它允许用户编辑表格本身中的单元格数据。我已点击此链接来实现它: 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 谢谢

最佳答案

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

关于java - Primefaces 在单元格中编辑数据表 event.getNewValue() 将旧值发送给bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120310/

相关文章:

java - JTable 图像渲染在应用程序中承受过多负载

java - 在 JavaScript 中处理来自支持 bean 的换行符

jsf-2 - 使用 primefaces 扩展 Dynaform 时出现问题 - jSF

multithreading - 在线程上运行进程 (JSF 2.2 - WELD 2.3)

java - 如何在 Thymeleaf 中使用 ArrayList 填充组合框?

java - Android 日历 View 更改文本颜色

java - 分布式作业调度、管理和报告

css - 如何在 CSS 中使用#resource?

java - 为什么我应该使用 JSF 而不是使用简单的 ZK 框架

jsf-2 - 如何从链接/非面孔请求调用 JSF 支持 bean 方法