繁体   English   中英

当我刷新包含数据表的页面时,我丢失了添加的新数据Primefaces JSF

[英]when I refresh the page that contains a datatable I lose the new data added Primefaces JSF

刷新包含数据表的页面时,丢失丢失添加到该数据表中的新数据时,将其刷新了近5次,或者重新启动了Tomcat应用程序服务器以获取发布的数据。 我使用Primefaces3.4 Hibernate 3 Jsf 2 Tomcat7。这是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;
    }
}

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

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

如果您在同一页面上执行操作,请确保您的方法为void类型,否则请返回null。 这将使您保持一致。

保留在DAO层后立即执行flush

这是基于您描述的行为的猜测。 如果可行,您应该调整您的Hibernate层的flush / commit选项,因为这些项目似乎是持久的,但没有提交/刷新,然后不更新持久性上下文,因此以后不在页面中显示。

希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM