【问题标题】:cellEdit don't work for mecellEdit 对我不起作用
【发布时间】:2015-03-05 07:46:28
【问题描述】:

嗨, 我的 DataTable 有问题,当我更改值并尝试获取它时,我在更改之前具有相同的值。帮助 PLZ 我解决了这个问题 8 天。

这是我的页面 xhtml

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <f:view contentType="text/html">
        <h:head>
            <f:facet name="first">
                <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
                <title>PrimeFaces</title>
            </f:facet>
        </h:head>
    <h:body>
    <center> <h3> Interventions Préventives </h3> </center> 
    <h:form id="form">
    <p:contextMenu for="cars2" widgetVar="cMenu">   
       <p:menuitem value="Edit Cell" icon="ui-icon-search" onclick="PF('cellCars').showCellEditor();return false;"/>  
       <p:menuitem value="Hide Menu" icon="ui-icon-close" onclick="PF('cMenu').hide()"/>  
   </p:contextMenu> 
   <p:growl id="msgs" showDetail="true"/>
  <p:dataTable id="cars2" var="item" value="#{monTest.personnes}" editable="true" editMode="cell" widgetVar="cellCars">
       <f:facet name="header"> Cell Editing with Click and RightClick
       </f:facet>
       <p:ajax event="cellEdit" listener="#{monTest.onCellEdit}" update=":form:msgs" />
       <p:column headerText="Id">
              <p:cellEditor>
                  <f:facet name="output"><h:outputText value="#{item.id}" /></f:facet>
                  <f:facet name="input"><p:inputText id="modelInput" value="#{item.id}" style="width:96%"/></f:facet>
              </p:cellEditor>
          </p:column>

          <p:column headerText="Year">
           <p:cellEditor>
               <f:facet name="output"><h:outputText value="#{item.nom}" /></f:facet>
               <f:facet name="input"><p:inputText value="#{item.nom}" style="width:96%" label="Year"/></f:facet>
           </p:cellEditor>
       </p:column>
</p:dataTable>
  </h:form>
     </h:body>
</f:view>
</html>

这是我的 MManagedBean

package ManagedBeans;

import entities.Personne;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.event.CellEditEvent;
import session.PersonneFacadeLocal;


@Named(value = "monTest")
@SessionScoped
public class MonTest implements Serializable {
    @EJB
    private PersonneFacadeLocal personneFacade;
    private List<Personne> personnes;
    private String value1;

    @PostConstruct
    public void init(){
        personnes=personneFacade.findAll();
    }

    public MonTest() {
    }

    public List<Personne> getPersonnes() {

        personnes=personneFacade.findAll();
        return personnes;
    }
    public void test(Personne p){

        System.out.println("*************************************************************************");
        System.out.println(p.getNom()+"**************"+p.getPrenom()+"*********************"+p.getAge());
    }

    public PersonneFacadeLocal getPersonneFacade() {
        return personneFacade;
    }

    public void setPersonneFacade(PersonneFacadeLocal personneFacade) {
        this.personneFacade = personneFacade;
    }

    public String getValue1() {
        return value1;
    }

    public void setValue1(String value1) {
        this.value1 = value1;
    }

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

        if(newValue != null && !newValue.equals(oldValue)) {
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }
}

【问题讨论】:

  • “试着得到它”...从哪里来?

标签: jsf-2 primefaces datatable celleditorlistener


【解决方案1】:

您的人员列表获取器正在从数据库中检索数据,而您的 onCellEdit 方法未更新数据库。所以数据表上的数据总是一样的。 更改您的 onCellEdit 方法以触发对正在更改的实体的更新方法(要获取此实体,请使用 event.getObject())。

【讨论】:

    猜你喜欢
    • 2015-08-03
    • 2017-09-29
    • 2018-06-14
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多