kerfahi
Messages postés88Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 5 mai 2013
-
28 févr. 2012 à 10:49
kerfahi
Messages postés88Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 5 mai 2013
-
28 févr. 2012 à 16:27
bonjour,
je veux savoir comment faire une page jsf pour enregistrer "personne" et "adresse" en même temps .est ce que je doit faire class controller pour chaque entite(personne,adress)???
RQ:personne peut avoir plusieur adresse.
je peut enregister personne seul dans la base avec la page jsp
mon problem comment lié pour avoir une seul page qui contient en même temps adresse et personne?????
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 28 févr. 2012 à 11:23
Bonjour,
Normalement, si tu codes proprement, dans ton managedBean, tu n'as pas d'objet personne et tu n'as pas d'objet adresse.
Tu n'as que des String ou des int qui te serviront ensuite à pour créer ces objets.
Tu as également UN controleur sur ta page (éventuellement deux si tu as un composant de gestion unifié des droits ou ce genre de choses).
Quand l'utilisateur valide le formulaire, tu appelles la méthode du controleur en lui passant le managedBean en paramètre. Et là, c'est le controleur qui récupère toutes les informations du managedBean pour créer tes objets Personne et Adresse.
Ensuite, ton controleur appelle tes classes Services ou DAO pour enregistrer les données dans la base (tu envois plusieurs requêtes sur la table Adresse et une requête sur la table personne)
Et la méthode qui te permet d'appeler le managedBean renvoi la chaine de caractère qui te permet d'effectuer la redirection.
Tu comprend le mécanisme ?
Par contre, n'utilises jamais deux contrôleurs pour un même écran sauf si tu as vraiment une bonne raison de le faire. C'est comme l'héritage sur les managedBean, c'est possible mais ca fout la merde un peu partout.
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 28 févr. 2012 à 13:57
Pour chaque écran html : un managedBean qui contient toutes les données de ton écran associé à un controleur qui contient autant de méthodes que de fonctions dans ton ihm.
Je parle de contrôleur au sens MVC et pas au sens Controle-Validation en jsf, on est d'accord ?
kerfahi
Messages postés88Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 5 mai 20132 28 févr. 2012 à 14:16
moi je parle du controleur en jsf qui permet la navigation entre les pages.et qui permet l'appel des dao pour effectuer les opperations necessaire.est ceque je doit faire "personneCtrol" "et adresseControl" ????
j'ai besoin d'enregistrer psersonne et adresse dans la base sachant qu'il sont deux tableau different????
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 28 févr. 2012 à 14:22
Alors, tu emplois controleur à mauvais escient...
Mais la réponse est un peu la même : tu n'as qu'un seul managedbean par écran et sur ce managed bean, tu peux avoir plusieurs méthodes qui te permettent d'enregistrer toutes les données et de rediriger ton utilisateur vers un autre écran gràce à l'édition du faces-config.
public List<Contact> list1(){
List<Contact> contacts=contactDaoLocal.gettAll();
return contacts;
}
public void validateEmail(FacesContext context, UIComponent toValidate,
Object value) throws ValidatorException {
String eMail = (String) value;
if (eMail.indexOf("@") < 0) {
FacesMessage message = new FacesMessage("Adresse Email invalide !");
throw new ValidatorException(message);
}
}
public List<Contact> getListContacts() {
return contactDaoLocal.gettAll();
}
public void setListContacts(List<Contact> listContacts) {
this.listContacts = listContacts;
}
}[b]
dand mon ejb j'ai les entite contact et adresse/b ma question est est ceque je doit avoir 2 controlleurs contactCtrl et adresse Ctrl???
si oui comment je doit faire pour ajouter en maime temps les attribues du contact et adresse???
par exemple:
dans une jage jsp
...
<h:input value="#{contactCtrl.contact.nom}" >
...
le problem comment faire pour adresse:
...
<h:input value ="#{adresseCtrl.adress.country}" >
...
comment je doit faire l'action ajout a la fin du formulaire?????
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 28 févr. 2012 à 14:57
Beurk, ce n'est pas comme ca qu'on utilise les bean normalement :(
Mais admettons, je ne vois pas ce qui te pose problème en fait. Il te suffit de tout placer dans un <h:form> et là, tu peux soit ajouter un commandLink soit un button, ... sur lequel tu places action=#{managedBean.methode}
Et lors du click, c'est cette méthode qui sera appelée. Elle doit retourner une chaine de caractère qui te servira à faire des redirections.
kerfahi
Messages postés88Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 5 mai 20132 28 févr. 2012 à 15:08
oui je sais ca .mais j'ai 2 managedBean
ou je doit placer la methode dans contactCtrl ou adressCtrl???
et comment je peut metre l'instance de l'adesse si j'ai choisie de metre la methode dans contactCtrl???
merci