bonjour, j'ai un formulaire depuis lequel je doit enregistrer mes informations en appelant 2 beans différents. comment procéder du moment que l'appel se fait depuis un commanbutton ??
merci bcp
bonjour, j'ai un formulaire depuis lequel je doit enregistrer mes informations en appelant 2 beans différents. comment procéder du moment que l'appel se fait depuis un commanbutton ??
merci bcp
Salut,
Ca m'a tout l'air d'un problème de conception ça ... mais bon.
Comme tu ne peux appeler qu'une seule action (bean1.action) depuis le commandButton, il faut appeler l'autre traitement (bean2.action) depuis bean1.action.
Dans la FAQ, tu as une QR sur comment récupérer un managed bean depuis un autre, et tu peux aussi utiliser la DI comme décrit dans la FAQ
Après, c'est du Java/POO, donc![]()
je me suis peut être mal exprimé, je vais essayer de dire la chose autrement;
prenant un exemple simple. supposant qu'on charche à gérer des restaurants, un client vient et passe une commande.
mon MCD sera donc sous la forme :
- Client(n_client, ....)
- Commande (n_cmd, ...)
avec pr cardinalités : relation 1-n entre commande et client
=> ce qui nous amène à la BD suivante:
- Client(n_client, ....)
- Commande (n_cmd,n_client ...)
je pense que ma conception est simple, claire et correcte.
passant à mon problème :
je voudrais appliquer une requete entre 2 table du genre :
> select * from commande, client
where commande.n_client = client.n_client;
comment gérer cette requête avec les beans, puisque on utilise un bean_client et un bean_commande.
j'espère avoir été assez clair
merci bcp pour votre aide
Ok, j'y vois plus clair maintenant
Tu fais la confusion entre les managed beans de JSF et les beans persistants d'Hibernate, qui n'ont rien à voir entre eux.
Bon, pour ta défense, le mot bean est tellement surchargé en Java qu'il ne veut strictement plus rien dire
Les beans d'Hibernate, Client, Commande, etc., on va les appeler BO, Business Objects, pour lever le doute.
Bref, dans une application Web Java traditionnelle, on sépare les traitements en couche:
- Couche DAO : encapsule l'accès aux données. Dans ton cas, elle peut contenir entre autres un objet CommandDao offrant une méthode :
- Couche service : utilise la couche DAO et y ajoute la logique métier : n'accepter uen commande qui si le client n'as pas de dettes, etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part public Collection<Command> getCommandsByClient(Client client)
- Couche contrôle/présentation : DAns le cas de JSF, ce sont les managed beans. Il font le lien avec l'IHM et invoquent les services en conséquence.
En aucun cas un managed bean va effectuer une requête SQL/HQL.
Tu peux t'inspirer de cet article pour avoir une vue d'ensemble de la chose:
http://djo-mos.developpez.com/tutori.../crud-jsf-jpa/
bonjour,
j'essais d'appeler une fonction d'un bean dans un autre j'ai donc mis
à partir de cmd j'arrive à avoir uniquement les getters et les setters des propriétés du bean, mais à aucune de ses méthodes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 FacesContext fc = FacesContext.getCurrentInstance(); Commande cmd = (Commande)fc.getExternalContext().getSessionMap().get("Commande_bean");
merci bcp
je vous montre mes fichiers de mapping en espérant avoir une solution à mon pb,
d'essais de récupérer les données de mon bean restaurant_ben dans mon 2ème bean plat_bean.
les fichier de mapping Restaurant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <class dynamic-insert="false" dynamic-update="false" mutable="true" name="Mapping.Restaurant" optimistic-lock="version" polymorphism="implicit" select-before-update="false" table="restaurant"> <id name="codeResto" column="code_resto" type="integer"> <generator class="increment"/> </id> <property name="libelleResto" type="string" column="libelle_resto" length="30"></property> </class>Restaurant bean :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class Restaurant implements java.io.Serializable { // Fields private Integer codeResto; private String libelleResto; ......... + les gettres et les setters
fichier mapping pour Plats :
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 public class b_Restaurant { Integer code_resto; String lib_resto; public Integer getCode_resto() { return code_resto; } public void setCode_resto(Integer code_resto) { this.code_resto = code_resto; } public String getLib_resto() { return lib_resto; } public void setLib_resto(String lib_resto) { this.lib_resto = lib_resto; } //--------------------------------------------------------------- public String ajout(){ ......... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <class dynamic-insert="false" dynamic-update="false" mutable="true" name="Mapping.Plat" optimistic-lock="version" polymorphism="implicit" select-before-update="false" table="plat"> <id name="codePlat" type="integer" column ="code_plat" > <generator class="increment" /> </id> <property name="libellePlat" type="string" column ="libelle_plat" length="100" /> <property name="naturePlat" type="string" column="nature_plat" length="50" /> <property name="prixPlat" type="float" column="prix_plat" precision="9" /> <many-to-one class="Mapping.Restaurant" column="resto" name="restaurant"/> </class>Plat_bean depuis lequel j'essais d'accéder à mon bean Restaurant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class Plat implements java.io.Serializable { // Fields private Integer codePlat; private String libellePlat; private Restaurant restaurant; private String naturePlat; private Float prixPlat; ....... + getters et setters
et là lorsque je met res. j'accède uniquement à libelle_resto et code_resto, je voudrais avoir aussi accès à ajout.
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 public class b_Plat { Set plats; Integer code_plat; String lib_plat; Integer resto_plat; String nature_plat; float prix_plat; Restaurant resto; public Restaurant getResto() { return resto; } public void setResto(Restaurant resto) { this.resto = resto; } public Set getPlats() { return plats; } public void setPlats(Set plats) { this.plats = plats; } public b_Plat() { } public Integer getCode_plat() { return code_plat; } public void setCode_plat(Integer code_plat) { this.code_plat = code_plat; } public String getLib_plat() { return lib_plat; } public void setLib_plat(String lib_plat) { this.lib_plat = lib_plat; } public Integer getResto_plat() { return resto_plat; } public void setResto_plat(Integer resto_plat) { this.resto_plat = resto_plat; } public String getNature_plat() { return nature_plat; } public void setNature_plat(String nature_plat) { this.nature_plat = nature_plat; } public float getPrix_plat() { return prix_plat; } public void setPrix_plat(float prix_plat) { this.prix_plat = prix_plat; } public String fonction(){ FacesContext fc = FacesContext.getCurrentInstance(); Restaurant res = (Restaurant)fc.getExternalContext().getSessionMap().get("Restaurant_bean"); return "ok"; }
j'espère que ça n'a pas été trop long.
merci bcp
Edit romaintaz: La balise CODE, c'est mieux que QUOTE ici![]()
Une question : res fait référence à un objet de quel type ? Restaurant ou b_restaurant ?
Nous sommes tous semblables, alors acceptons nos différences !
--------------------------------------------------------------
Liens : Blog | Page DVP | Twitter
Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
Critiques : Apache Maven
vous aviez raison je devais faire référence à b_Restaurant.
merci bcp bcp je galère avec depuis 3 jours.
merci bcp![]()
Partager