Salut tout le monde
voila j'ai commencé à me familiariser avec les java beans et j'ai voulu developper une petite partie d'une application
dans cette partie j'ai conçu un entité bean, un session bean qui le controle et un JSF Managed bean une jsp qui s'occupe des l'affichage et qui contient un formulaire où je saisie les propriétés de mon entity bean sauf que j'ai un probleme lors du clique sur un bouton une action doit se declancher celle de persister mon bean et ainsi voir le resultat sur la table de ma base de données
mais le prob c que lors du clique sur le bouton rien ne s'enregistre sur ma table et je pense que soit mon bean a un id null soit une mauvaise manipulation de la requete jsf mais je pense à 80% que c le premier cas voila mon code
entité:
session:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 import javax.persistence.Table; /** * * @author Administrateur */ @Entity @Table(name = "agence") @NamedQueries({@NamedQuery(name = "Agence.findByIdAgence", query = "SELECT a FROM Agence a WHERE a.idAgence = :idAgence"), @NamedQuery(name = "Agence.findByNomAgence", query = "SELECT a FROM Agence a WHERE a.nomAgence = :nomAgence"), @NamedQuery(name = "Agence.findByAdresseAgence", query = "SELECT a FROM Agence a WHERE a.adresseAgence = :adresseAgence"), @NamedQuery(name = "Agence.findByTelephoneAgence", query = "SELECT a FROM Agence a WHERE a.telephoneAgence = :telephoneAgence")}) public class Agence implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id_agence", nullable = false) private Integer idAgence; @Column(name = "nom_agence") private String nomAgence; @Column(name = "adresse_agence") private String adresseAgence; @Column(name = "telephone_agence") private String telephoneAgence; public Agence() { } public Agence(Integer idAgence) { this.idAgence = idAgence; } public Integer getIdAgence() { return idAgence; } public void setIdAgence(Integer idAgence) { this.idAgence = idAgence; } public String getNomAgence() { return nomAgence; } public void setNomAgence(String nomAgence) { this.nomAgence = nomAgence; } public String getAdresseAgence() { return adresseAgence; } public void setAdresseAgence(String adresseAgence) { this.adresseAgence = adresseAgence; } public String getTelephoneAgence() { return telephoneAgence; } public void setTelephoneAgence(String telephoneAgence) { this.telephoneAgence = telephoneAgence; } @Override public int hashCode() { int hash = 0; hash += (idAgence != null ? idAgence.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Agence)) { return false; } Agence other = (Agence) object; if ((this.idAgence == null && other.idAgence != null) || (this.idAgence != null && !this.idAgence.equals(other.idAgence))) { return false; } return true; } @Override public String toString() { return "entitebean.Agence[idAgence=" + idAgence + "]"; } }
managed bean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package sessionbean; import entitebean.Agence; import javax.annotation.Resource; import javax.ejb.Stateless; import javax.ejb.TransactionManagement; import javax.ejb.TransactionManagementType; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.transaction.UserTransaction; /** * * @author Administrateur */ @Stateless @TransactionManagement(TransactionManagementType.BEAN) public class sessionbeanBean implements sessionbeanRemote { @PersistenceContext(unitName="Stage-ejbPU") EntityManager persistance; @Resource private UserTransaction utx; // Add business logic below. (Right-click in editor and choose // "EJB Methods > Add Business Method" or "Web Service > Add Operation") public sessionbeanBean(){} public void setAgence(){ Agence agence=new Agence(); persistance.persist(agence); } public void modifier(Agence agence){ persistance.merge(agence); } public void supprimer(Agence agence){ persistance.remove(agence); } public Agence rechercher(Integer id){ return persistance.find(Agence.class, id); } public void save(Agence agence) throws Exception { try { utx.begin(); persistance.joinTransaction(); persistance.persist(agence); utx.commit(); } catch (Exception ex) { try { utx.rollback(); throw new Exception(ex.getLocalizedMessage()); } catch (Exception e) { throw new Exception(e.getLocalizedMessage()); } } finally { persistance.close(); } } }
ma jsp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package bean; import entitebean.Agence; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import sessionbean.sessionbeanBean; /** * * @author Administrateur */ public class NewJSFManagedBean { private sessionbeanBean session=new sessionbeanBean(); private Agence agence=new Agence(); /** Creates a new instance of NewJSFManagedBean */ public NewJSFManagedBean() { } public void setSessionbeanBean(sessionbeanBean session){ this.session=session; } public sessionbeanBean getSessionbeanBean(){ return session; } public void setAgence(Agence agence){ this.agence=agence; } public Agence getAgence(){ return agence; } public String save() { try { this.session.save(agence); addSuccessMessage("Success"); } catch (Exception ex) { addErrorMessage(ex.getLocalizedMessage()); } return "oui"; } public static void addErrorMessage(String msg) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg); FacesContext fc = FacesContext.getCurrentInstance(); fc.addMessage(null, facesMsg); } public static void addSuccessMessage(String msg) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg); FacesContext fc = FacesContext.getCurrentInstance(); fc.addMessage("successInfo", facesMsg); } }
.....
.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <h:form> <table width="450" border="0"> <tr> <th scope="row"> <h:outputText value="Nom de l'agence :" /> <td><h:inputText id="nomAgence" value="#{NewJSFManagedBean.agence.nomAgence}" title="Nom de l'agence" /></td> </tr> <tr> <th scope="row"> <h:outputText value="Adresse de l'agence :" /> </th> <td><h:inputTextarea id="adresseAgence" value="#{NewJSFManagedBean.agence.adresseAgence}" title="Adresse de l'agence" rows ="2" cols="15" /> </td> </tr> <tr> <th scope="row"> <h:outputText value="Téléphone de l'agence :" /> </th> <td><h:inputText id="telephoneAgence" value="#{NewJSFManagedBean.agence.telephoneAgence}" title="Téléphone de l'agence" /></td> </tr> <tr> <th> </th> <td> <h:commandButton action="#{NewJSFManagedBean.save}" value="Enregistrer" /><input name="Effacer" type="reset" value="Effacer"> </td> </tr> </table> </h:form>
j'espere avoir de l'aide et je vous remercie
j'attend toujours vos reponses je travaille encore là dessus et jusqu'à maintenant je trouve pas de solution svp que qlq1 me reponde car je suis vraiment bloqué
Partager