[RichFaces] commandButton - action - addMessage - le message ne s'affiche pas
Bonjour à tous,
J'utilise RichFaces et Ajax4Jsf pour faire de l'ajax sur mes pages.
Voici un exemple de mes formulaires :
Code:
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> |
Comme vous pouvez le voir, une action est associé a mon commandButton.
Voici le code de cette fonction :
Code:
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 ma règle de navigation dans mon fichier faces-config.xml :
Code:
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> |
Voici mon problème :
* 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 ?