probleme avec le select one menu
Salut les jeunes
Je travaille sur une application web avec jsf et hibernate et la ça fait plus q'une semaine que mon problème persiste avec les select one menu puisque je ne suis pas trop hibernate , je vais vous expliquer de quoi s'agit il , j'ai une classe personnel avec deux clés étrangères agence et statut, tout simplement je veux faire l'insertion du personnel à travers une formulaire qui contient deux select one menu , le premier pour les agences et le deuxième pour les statuts , mon probleme c'est que je n'arrive plus à récupérer les valeurs de ces combo pour insérer le personnel sur la base de données . En fait Quand je clique sur le bouton ajouter le presonnel s'insere mais les champs de agence et statut reste vides . veuillez m'aider s'il vous plait à résoudre ce problème . si vous aurez besoin d'une partie du code qui peut vous aider à detecter le probleme je suis la
voici le select one menu qui affiche la liste des agences
NB : showA = AgenceController c'est la ou je fais appel à la méthode qui liste les agences
Code:
1 2 3 4 5 6 7
|
<h:outputText value="Agence"/>
<h:selectOneMenu id="SA" value="#{showA.agence.numAgence}" style="width:200px">
<f:selectItem itemLabel="--sélectionner une agence--" noSelectionOption="true" />
<f:selectItems value="#{showA.agences}" var ="ag" itemValue="#{ag.numAgence}" itemLabel="#{ag.nomAgence}"/>
</h:selectOneMenu> |
la méthode create de DAO pour ajouter un personnel
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
/* Ajouter un personnel */
public boolean create(Personnel p){
boolean flag ;
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
try{
s.beginTransaction();
s.save(p);
s.getTransaction().commit();
flag= true;
}catch(Exception e){
flag= false;
s.getTransaction().rollback();
}
return flag;
} |
la méthode insert sur le controller
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public String insert () {
personnelDAO dao = new personnelDAO() ;
String msg ;
if(dao.create(p)){
msg="personnel enregistré correctement";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}else {
msg="L'enregistrement a echoué";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
return "succes" ;
} |
voici l'entité personnel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
@Entity
@Table(name="personnel"
,catalog="derichebourg"
)
public class Personnel implements java.io.Serializable {
private String cin;
private Statut statut;
private Agence agence;
private String nomPersonnel;
private String prenom;
private String numTelephone;
private String adresse;
private String fonction;
private String login;
private String motDePasse;
private String mail;
private Set<Conducteur> conducteurs = new HashSet<Conducteur>(0);
private Set<Responsableconducteur> responsableconducteurs = new HashSet<Responsableconducteur>(0);
public Personnel() {
}
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="statut", nullable=true)
public Statut getStatut() {
return this.statut;
}
public void setStatut(Statut statut) {
this.statut = statut;
}
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="numAgence", nullable=true)
public Agence getAgence() {
return this.agence;
} |
j'ai essayé d'insérer le personnel statiquement comme ceci et ça marche nikel
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
/*
public static void main(String[] args) {
Agence agence = new Agence();
agence.setNumAgence(5);
Statut statut = new Statut();
statut.setNumStatut(1);
Personnel p = new Personnel();
p.setCin("Mohamed ali ");
p.setAgence(agence);
p.setStatut(statut);
personnelDAO dao = new personnelDAO() ;
dao.create(p);
System.out.print(agence.getNomAgence());
}
*/ |