Come ottenere le impostazioni locali del visitatore in JSP utilizzando SessionLocaleResolver di Spring 3

StackOverflow https://stackoverflow.com/questions/7368863

Domanda

Ho bisogno di ottenere la locale di un visitatore nelle mie pagine JSP in modo da poter visualizzare correttamente un menu a discesa con un elenco di lingue e avere la lingua selezionata in base alla loro locale corrente.Normalmente potrei fare qualcosa come ${pageContext.request.locale}.

Il problema, credo , è che mi fornirà solo le impostazioni internazionali in base alle intestazioni della richiesta dell'utente (ciò che il browser invia).Ma l'utente potrebbe aver cambiato la propria lingua / locale, quindi ho bisogno di usare il meccanismo di Spring che guarda anche alla sessione:

RequestContextUtils.getLocale(request).toString();

Ma poi non è così facile accedervi in una pagina JSP e far funzionare il codice JSP.

O esiste un altro meccanismo più semplice per visualizzare un menu a discesa di lingue per un utente?Spring memorizza la locale corrente in un oggetto facilmente accessibile da JSP?

È stato utile?

Soluzione

Quando si utilizza SessionLocaleResolver, la locale corrente viene memorizzata nella sessione utilizzando un nome di attributo specificato nella classe SessionLocaleResolver.Il riferimento a SessionLocaleResolver viene memorizzato nella richiesta utilizzando un altro nome di attributo (org.springframework.web.servlet.DispatcherServlet # LOCALE_RESOLVER_BEAN_NAME).

Non vedo un modo semplice per ottenere le impostazioni locali direttamente dalla pagina jsp senza utilizzare il codice java.

Recupererei le impostazioni internazionali correnti e creerei l'elenco delle lingue selezionabili nel controller e le aggiungerei al modello.

Questo rende il codice testabile e sposta il codice java da jsp al controller.

Altri suggerimenti

Per noi

${pageContext.response.locale}

ha fatto il trucco.Questa proprietà segue quanto impostato dal risolutore locale di Spring.

Soluzione in una riga ..

RequestContextUtils.getLocale(request)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top