Bonjour à tous,
J'utilise RichFaces et Ajax4Jsf pour faire de l'ajax sur mes pages.
Voici un exemple de mes formulaires :
Comme vous pouvez le voir, une action est associé a mon commandButton.
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 <a4j:form id="loginForm" ajaxSubmit="true"> <h:outputLabel for="username" value="#{bundle.USERNAME} :" styleClass="label" /> <h:inputText id="username" value="#{loginBean.username}" required="true" requiredMessage="#{bundle.YOUR_USERNAME_REQUIRED}" /> <rich:message for="username" styleClass="validator" /> <br /> <h:outputLabel for="password" value="#{bundle.PASSWORD} :" styleClass="label" /> <h:inputSecret id="password" value="#{loginBean.password}" required="true" requiredMessage="#{bundle.YOUR_PASSWORD_REQUIRED}" /> <rich:message for="password" styleClass="validator" /> <br /> <h:outputLabel for="theme" value="#{bundle.THEME} :" styleClass="label" /> <h:selectOneMenu id="theme" onchange="submit()" immediate="true" value="#{themeBean.name}"> <f:selectItem itemValue="default" /> <f:selectItem itemValue="negative" /> </h:selectOneMenu> <br /> <rich:messages globalOnly="true" styleClass="error" /> <div class="form_footer"> <h:commandButton action="#{loginBean.login}" value="#{bundle.LOGIN_BUTTON}" styleClass="button" /> </div> </a4j:form>
Voici le code de cette fonction :
Voici ma règle de navigation dans mon fichier faces-config.xml :
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 public String login() { User user = Gesnet.authenticationManager.login(username, password); if(user == null) { System.out.println("Login Failed"); context.addMessage(null, new FacesMessage(JSFUtil.getResourceBundle(context, "bundle").getString("LOGIN_ERROR"))); return null; } else { System.out.println("Login Success"); return "success"; } }
Voici mon problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <navigation-rule> <from-view-id>/pages/users/login.xhtml</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/pages/index.xhtml</to-view-id> </navigation-case> </navigation-rule>
* Lorsque je valide le formulaire et que des champs sont vides, les messages s'affichent bien sans rechargement de la page.
* Par contre lorsque les validations sont passé et qu'il exécute la fonction login(), j'ai bien le message "Login Success" qui s'affiche dans ma console et la fonction retourne "success". Mais la règle de navigation n'est pas respecté puisque lorsque je retourne "success", il est sensé aller à la vue : "/pages/index.xhtml". Et dans mon cas rien ne se passe.
Est-ce que quelqu'un aurait un petit conseil à propos de cela ?
Partager