Probleme d'Internationalisation avec JSF
bonjour,
Je débute en jsf et en ce moment je teste le changement de langue normalement simplifié par jsf. Le souci c'est que j'arrive bien à changer de langue sur une page mais quand je passe aux suivantes le mode par defaut revient, y a-t-il un attribut spécifique pour lui dire de le conserver pour toute la durée de la session utilisateur ?
Le FacesContext n'a qu'une portée requete?
Voilà ce que j'ai fait pour le moment :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
dans la jsp :
<h:commandLink action="#{languageSwitcher.switchOnEn}" immediate="true">
<h:graphicImage value="img/en.jpg" width="30px" height="20px" style="border:0px"/>
</h:commandLink>
...
dans la class qui fait le changement :
public String switchOnEn() {
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale(Locale.ENGLISH);
return null;
}
...
dans le config.xml:
<managed-bean>
<managed-bean-name>languageSwitcher</managed-bean-name>
<managed-bean-class>test.LanguageSwitcher</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>(request?)
</managed-bean> |
si quelqu'un peut m'aider ... :roll:
merci
Conserver la Locale dans toute l'application
Voici la déclaration de mon template j'ai mis ça:
Code:
1 2 3 4 5
| <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
locale="#{DSLocaleBean.locale}"> |
Où surtout la locale est interressante " locale="#{DSLocaleBean.locale}"".
Ceci permet de recharger la locale que l'on a setté.
Mon Bean:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
@ManagedBean(name = "DSLocaleBean")
@SessionScoped
public class DSLocaleBean
{
private Locale locale = Locale.FRENCH;
public String changeToEnglish()
{
this.locale = Locale.ENGLISH;
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
return FacesContext.getCurrentInstance().getExternalContext().getRequestPathInfo();
}
// avec les accesseurs sur ma locale bien sur...
} |