Salve ragazzi,
ho un problema che non riesco a risolvere riguardo il cambio lingua sulla mia applicazione web: vorrei che l'utente, selezionando la bandierina ENG (per esempio), passi dalla visualizzazione in italiano a quella in inglese e la mantenga per TUTTA la sessione di lavoro. (come accade in tutti i più comuni siti web)
Quello che sono riuscito a produrre è che, cliccando sulla bandierina ENG, la pagina su cui si trova l'utente viene ricaricata in inglese, solo che, passando ad un'altra pagina, la lingua ritorna ad essere quella di default e cioè l'italiano. E non riesco a capire perché.
Ipotizzo sia un problema di sessione, che non riesce a tenere a mente il cambio di lingua.
Vi posto un po' di codice.
Questo è il bean .java che mi permette di effettuare il cambio lingua:
Questa è la dichiarazione del bean nel file faces-config.xml:codice:import javax.faces.context.FacesContext; import java.util.Locale; public class LocaleManager { public String italian() { FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot().setLocale(Locale.ITALIAN); return null; } public String english() { FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot().setLocale(Locale.ENGLISH); return null; } public Locale getLocale() { FacesContext context = FacesContext.getCurrentInstance(); return context.getViewRoot().getLocale(); } }
E questa è la parte di codice relativa al "cambio di lingua", inserito nell'heander.jsp dell'applicazione web:codice:<managed-bean> <managed-bean-name>LocaleManager</managed-bean-name> <managed-bean-class>it.miosito.beans.LocaleManager</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
Ora: sembra funzionare tutto apparentemente, nel senso che cliccando su EN, effettivamente passa alla lingua inglese, ma cambiando pagina tornano a visualizzarsi tutti i valori in italiano.codice:<h:form id="locale"> <h:commandLink immediate="true" action="#{Manager.lm.italian}"> <h:outputText value="IT"/> </h:commandLink> <h:commandLink immediate="true" action="#{Manager.lm.english}"> <h:outputText value="EN"/> </h:commandLink> </h:form>
Dove è l'errore? Cosa sbaglio?
Spero di essere stato chiaro!
L'applicazione è scritta in java e jsf1.2 come da titolo.
Ringrazio tutti per la disponibilità!!
Ciao ciao

Rispondi quotando