Pergunta

Preciso obter a localidade de um visitante em minhas páginas JSP para que possa exibir corretamente um menu suspenso com uma lista de idiomas e ter o idioma selecionado de acordo com sua localidade atual.Normalmente, eu poderia fazer algo como ${pageContext.request.locale}.

O problema, eu acho , é que só me dá a localidade de acordo com os cabeçalhos de solicitação do usuário (o que o navegador envia).Mas o usuário pode ter mudado seu idioma / localidade, então eu preciso usar o mecanismo do Spring que examina a sessão também:

RequestContextUtils.getLocale(request).toString();

Mas não é tão fácil acessar isso em uma página JSP e fazer com que o código JSP funcione com ela.

Ou existe outro mecanismo mais fácil para exibir um menu suspenso de idiomas para um usuário?O Spring armazena a localidade atual em um objeto facilmente acessível a partir de JSP?

Foi útil?

Solução

Conforme você usa o SessionLocaleResolver, o local atual é armazenado na sessão usando um nome de atributo especificado na classe SessionLocaleResolver.A referência ao SessionLocaleResolver é armazenada na solicitação usando outro nome de atributo (org.springframework.web.servlet.DispatcherServlet # LOCALE_RESOLVER_BEAN_NAME).

Não vejo uma maneira fácil de obter a localidade diretamente na página jsp sem usar o código java.

Gostaria de obter o local atual e criar a lista de idiomas selecionáveis no controlador e adicioná-lo ao modelo.

Isso torna o código testável e move o código java do jsp para o controlador.

Outras dicas

Para nós

${pageContext.response.locale}

fez o truque.Esta propriedade segue o que foi configurado pelo resolvedor local do Spring.

Solução de uma linha ..

RequestContextUtils.getLocale(request)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top