Bonjour,

je veux implementer un bean d'internationalisation pour mon application jsf spring pour 3 langue(francais, arabe, anglais)

le code mon bean d'internationalisation est:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class InternationalisationBean implements Serializable {
 
private static final long serialVersionUID = 1L;
private Locale locale;
private String langue;
 
 
 
public void changerLangue() {
    // mise en forme de la langue
    int index=this.langue.indexOf("_");
    if(index>0){
        String choixLangue=this.langue.substring(0,index);
        String pays=this.langue.substring(index+1);
        locale=new Locale(choixLangue,pays);
    }else {
        locale=new Locale(this.langue);
    }
    // chargement dynamique de la langue
    UIViewRoot viewRoot=FacesContext.getCurrentInstance().getViewRoot();
    viewRoot.setLocale(locale);
    FacesContext.getCurrentInstance().getApplication().setDefaultLocale(locale);
    // retourner automatiquement sur la page appelante
    FacesContext context=FacesContext.getCurrentInstance();
    String viewId= context.getViewRoot().getViewId();
    javax.faces.application.ViewHandler handler = context.getApplication().getViewHandler();
    UIViewRoot root= handler.createView(context, viewId);
    root.setViewId(viewId);
    context.setViewRoot(root);
 
}
 
public Locale getLocale() {
    return locale;
}
 
public void setLocale(Locale locale) {
    this.locale = locale;
}
 
public String getLangue() {
    return langue;
}
 
}
Le code de mon xhtml page est:


Code xhtml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<h:form prependId="false">
 
        <h:outputText value="#{bundle.header}: " />
            <p:selectOneRadio id="options"  value="#{internationalisationBean.langue}">
                <f:selectItem itemLabel="Francais" itemValue="fr"  />
                <f:selectItem itemLabel="Anglais" itemValue="en" />
                <f:selectItem itemLabel="Arabe" itemValue="ar" />
            </p:selectOneRadio>
 
        <p:commandButton type="submit" id="submitLangage" value="Enregistrer"
                    action="#{internationalisationBean.changerLangue()}"  ajax="false" />
    </h:form>

La probleme c'est que lorsque je choisi la langue arabe la modification aura lieu mais lorsque je fais refreche de la page je reviens vers la langue precedente.
cette probleme ne se pose pas avec la langue francais ou anglais

Aidez moi SVP