1

当我刷新包含数据表的页面时,我丢失了添加到数据表中的新数据,我刷新它几乎 5 次,或者我重新启动 tomcat 应用程序服务器以获取我发布的数据。我正在使用 Primefaces3.4 Hibernate 3 Jsf 2 Tomcat 7。这是 ManagedBean 的摘录:

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import javax.enterprise.inject.New;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedProperty;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

import org.primefaces.event.FlowEvent;
import org.primefaces.event.RowEditEvent;

import com.oxynord.dao.RetourDao;
import com.oxynord.dao.BonbonneDao;
import com.oxynord.dao.BonbonneDataModel;
import com.oxynord.dao.ChargementDao;
import com.oxynord.dao.ChauffeurDao;
import com.oxynord.dao.EnvoiDao;
import com.oxynord.dao.UtilisateurDao;
import com.oxynord.dao.VenteDao;
import com.oxynord.data.*;
public class BonBonneManagedBean {
//test test
//private BonbonneDao BDAO=new BonbonneDao();
private Bonbonne bonbonne=new Bonbonne();
private Bonbonne selectedBonbonne;
private Chauffeur chauffeur=new Chauffeur();
private Chargement chargement=new Chargement();
private Chargement selectedChargement;
private Envoi envoi=new Envoi();
private Envoi selectedEnvoi;
private Client client=new Client();
private Vente vente=new Vente();
private Retour retour=new Retour();
private Client selectedClient;
private List<Client> listClients;
private List<Historiquebonbonne> listhistorique;

// Test Vente
List<Bonbonne> bs=new ArrayList<Bonbonne>();
List<Bonbonne> bs2=new ArrayList<Bonbonne>();

// get user connecté from session
private AuthenticationController authen = (AuthenticationController)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("authenticationController");


private Date date=new Date();

// -- Table à cocher des bonbonnes --
private BonbonneDataModel bonbonneDataModel;
private Bonbonne[] selectedBonbonnes;

boolean next=false;

public boolean isNext() {
    return next;
}

public void setNext(boolean next) {
    this.next = next;
}


// -------------------------------- edit -----------------------------------------------

// modifier une bonbonne
public void onEdit(RowEditEvent event) throws Exception {  
        BonbonneDao.ModifierBonbonne(((Bonbonne) event.getObject()));   
} 
// modifier un chauffeur
public void onEditChauffeur(RowEditEvent event) throws Exception {  
    BonbonneDao.ModifierChauffeur(((Chauffeur) event.getObject())); 
 } 

这是 BonbonneDAO :

 import java.util.ArrayList;
     import java.util.Date;
     import java.util.List;

     import javax.faces.application.FacesMessage;
     import javax.faces.context.FacesContext;

     import org.hibernate.Session;

     import com.oxynord.data.Bonbonne;
     import com.oxynord.data.Chauffeur;
     import com.oxynord.data.Client;
     import com.oxynord.data.Domaine;
     import com.oxynord.data.Etatactuelle;
     import com.oxynord.data.Historiquebonbonne;
     import com.oxynord.data.Produit;
     import com.oxynord.data.Stock;
     import com.oxynord.data.Utilisateur;
     import com.oxynord.data.Ville;
     import com.oxynord.data.Volume;
     import com.oxynord.utile.HibernateUtil;

     public class BonbonneDao {
Date date=new Date();

//----------List Historiquebonbonne--------------------------

    @SuppressWarnings("unchecked")
    public static List<Historiquebonbonne> HistoriqueBonbonne(Bonbonne bonbonne) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List<Historiquebonbonne> listHistoriquebonbonne= new ArrayList<Historiquebonbonne>();
        listHistoriquebonbonne= session.createQuery("from Historiquebonbonne as h where h.bonbonne.idBonbonne='"+bonbonne.getIdBonbonne()+"' order by h.idHistorique desc ").list();
        return listHistoriquebonbonne;
    }

//----------List des bonbonnes qui ont dépasser la date de 3 mois--------------------------

@SuppressWarnings("unchecked")
public static List<Bonbonne> BonbonnesVendu() {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Bonbonne> listBonbonnesVente= new ArrayList<Bonbonne>();
    listBonbonnesVente = session.createQuery("from Etatactuelle where libelle= 'Vendu' ").list();
    return listBonbonnesVente;
}

//--------------------------------------------------------------------------

@SuppressWarnings("unchecked")
public static List<Bonbonne> ListBonbonnesVide() {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Bonbonne> listBonbonnes= new ArrayList<Bonbonne>();
    listBonbonnes = session.createQuery("from Bonbonne where etatactuelle.idEtat=1 and stock.idStock=1").list();
    return listBonbonnes;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

@SuppressWarnings("unchecked")
public static  List<Bonbonne> AllBonbonnes() {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Bonbonne> listBonbonnes= new ArrayList<Bonbonne>();
    listBonbonnes = session.createQuery("from Bonbonne").list();
    return listBonbonnes;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

@SuppressWarnings("unchecked")
public static List<Produit> AllProduits() {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Produit> listProduit= new ArrayList<Produit>();
    listProduit = session.createQuery("from Produit").list();
    return listProduit;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

@SuppressWarnings("unchecked")
public static List<Ville> AllVille() {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Ville> listVille= new ArrayList<Ville>();
    listVille = session.createQuery("from Ville").list();
    return listVille;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

@SuppressWarnings("unchecked")
public static List<Domaine> AllDomaine() {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Domaine> listDomaine= new ArrayList<Domaine>();
    listDomaine = session.createQuery("from Domaine").list();
    return listDomaine;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

@SuppressWarnings("unchecked")
public static List<Volume> AllVolumes() {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Volume> listVolume= new ArrayList<Volume>();
    listVolume = session.createQuery("from Volume").list();
    return listVolume;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

@SuppressWarnings("unchecked")
public static List<Etatactuelle> AllEtatsActuelleBonbonne() {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Etatactuelle> listEtatactuelle= new ArrayList<Etatactuelle>();
    listEtatactuelle = session.createQuery("from Etatactuelle").list();
    return listEtatactuelle;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

@SuppressWarnings("unchecked")
public static List<Stock> AllStocks() {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<Stock> listStock= new ArrayList<Stock>();
    listStock = session.createQuery("from Stock").list();
    return listStock;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}

// ---------------------------- Ajouter Bonbonne -----------------------------------------------

@SuppressWarnings("unchecked")
public static boolean addBonbonne(Bonbonne bonbonne) throws Exception {
    try {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    org.hibernate.Transaction tx = session.beginTransaction();
    List<Bonbonne> b=session.createQuery("from Bonbonne where codebare='"+bonbonne.getCodebare()+"' or numeroSerie='"+bonbonne.getNumeroSerie()+"'").list();

    /* Test si le bonbonne est deja enregistrer
     si oui --> afficher que le bobonne est deja enregistrer
     si non --> enregistrer le bonbonne */

    if(b.size()==0) {
    //Utilisateur u=(Utilisateur) session.createQuery("from Utilisateur").list().get(0);    
    //bonbonne.setUtilisateur(u);
    session.save(bonbonne); 
    tx.commit();
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("une bonbonne a été enregister avec succes"));
    return true;
    } else {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Il existe déjà un Code barre:"+b.get(0).getCodebare()+" avec un numero de série:"+b.get(0).getNumeroSerie()+"", "Code barre ou numero de série déjà enregistrer"));  
    return false;
    }

    } catch (Exception e) {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erreur d'enregistrement", "Erreur d'enregistrement"));  
    System.out.println(e);
    return false;
    }
}
4

2 回答 2

1

将托管 bean 的范围更改为:@javax.faces.bean.ViewScoped

于 2012-10-10T06:14:12.890 回答
0

您应该使用@ViewScoped它来确保只要您停留在同一个视图(又名 yourpage.xhtml)中,数据就会持续存在。

如果您在同一页面中执行操作,请确保您的方法是 typevoid或返回 null 否则。这将使您保持相同的观点。

flush在你的 DAO 层持久化之后执行一次。

这是基于您所描述的行为的猜测。如果它有效,您应该调整您的 Hibernate 层刷新/提交选项,因为似乎项目正在持久化但未提交/刷新,然后不更新持久性上下文,因此之后不会显示在页面中。

我希望它有所帮助。

于 2012-10-10T08:35:45.597 回答