Dépendance de Managed Bean
Bonjour/Bonsoir,
Dans le cadre d'un projet de fin de formation, j'essaie de mieux comprendre le fonctionnement de JSF et notamment le comportement des managedBeans
Pour avancer dans mon projet j'aimerais pouvoir "coupler" plusieurs managedBean dans un seul, mais pour le moment je sèche.
Au niveau de l'architecture j'ai :
Un module de login, qui comporte 2 case à remplir (identifiant et mot de passe) avec les labels et tout ce qui va bien.
Un template de page (pour les menu, pied de page ...)
Une page qui utilise le template et embarque le module dans un formulaire avec un boutton "connexion".
Au niveau des managedBean j'en ai un pour l'utilisateur (login/password) et un pour la page final.
Comment la page final peut-elle recuperrer les information du ManagedBean utilisateur ?
Pour ce qui est des codes :
Le module:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<p:fieldset legend="Login">
<h:panelGrid columns="2" cellpadding="5">
<p:outputLabel for="login" value="Login: " />
<p:inputText id="login" value="#{mBWebsiteUser.websiteUser.login}" />
<p:outputLabel for="password" value="Password: " />
<p:password id="password" value="#{mBWebsiteUser.password}" />
</h:panelGrid>
</p:fieldset>
</ui:composition> |
La page finale
Code:
1 2 3 4 5 6 7 8 9 10 11
| [...]
<h:body>
<ui:composition template="/template/template.xhtml">
<ui:define name="body">
<h:form>
<ui:include src="../module/loginForm.xhtml" />
<h:commandButton value="Connection" actionListener="#{mBControllerLogin.isLogged()}"/><br/>
</h:form>
</ui:define>
</ui:composition>
</h:body> |
Et les managedBean
De l'utilisateur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @Named(value = "mBWebsiteUser")
@SessionScoped
public class MBWebsiteUser implements Serializable {
private IManagerWebsiteUser managerWebsiteUser;
private WebsiteUser websiteUser;
public MBWebsiteUser() {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
managerWebsiteUser = (IManagerWebsiteUser) context.getBean("ManagerWebsiteUser");
managerWebsiteUser.prepare();
websiteUser = new WebsiteUser();
}
// les getters et setters
} |
La page
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @Named(value = "mBControllerLogin")
@SessionScoped
public class MBControllerLogin implements Serializable {
@ManagedProperty("#{mBWebsiteUser.websiteUser}")
private WebsiteUser websiteUser;
public MBControllerLogin() {
}
public String isLogged() {
return CommonUser.INSTANCE.login(websiteUser);
}
public void setWebsiteUser(WebsiteUser websiteUser) {
this.websiteUser = websiteUser;
}
} |
En l'état actuelle des choses, websiteUser (dans le MB de la page) est vide, et ne contient pas les données saisie dans la page.
Je ne sais pas si j'aborde la question sous le bon angle de vue ? ni comment trouver une solution à ce problème.
J'ai aussi essayé de récupérer le managedBean depuis la session, mais rien n'y fait.
Merci d'avance pour vos idée et réponses