首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Vaadin框架从浏览器获取区域设置

Vaadin框架从浏览器获取区域设置
EN

Stack Overflow用户
提问于 2017-11-08 14:25:28
回答 3查看 2K关注 0票数 1

我正在为翻译的目的而设置地点。当区域设置在会话期间保持不变时,它就会工作。但是,如果我在会话中间更改区域设置并重新加载页面,则它将停留在旧的区域设置中。

您知道从浏览器获取最新语言设置的方法吗?

我的守则:

代码语言:javascript
代码运行次数:0
运行
复制
@SpringUI
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MainUI.class)
public class MainUI extends UI
{

    @Override
    protected void init(VaadinRequest request)
    {       
        log.debug("MainUI init! locale: {}", getLocale());//or getSession().getLocale()
        messageByLocaleService.setLocale(getLocale());
        ...

我自己找到了一个解决方案,但我不能百分之百肯定这是正确的解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-16 13:52:13

我发现Page.getCurrent().getWebBrowser()有时会抛出空异常。为了评估cookie,我还需要一个request对象。

我可以通过VaadinService.getCurrentRequest()获得一个请求对象。因此,我可以从那里得到区域设置,并有一个单一的故障点,使我的代码更可靠。

所以,我目前的答案是:

代码语言:javascript
代码运行次数:0
运行
复制
Locale locale = VaadinService.getCurrentRequest().getLocale();
票数 4
EN

Stack Overflow用户

发布于 2017-11-08 15:04:32

在Vaadin应用程序中,我以这种方式获得区域设置(关于浏览器):

代码语言:javascript
代码运行次数:0
运行
复制
 final WebBrowser webBrowser = Page.getCurrent().getWebBrowser();
 Locale locale = webBrowser.getLocale();

方法返回浏览器的默认位置。

票数 2
EN

Stack Overflow用户

发布于 2017-11-08 14:31:29

我发现使用request.getLocale()可以做我想做的事情,这让我感到惊讶,因为与我的问题非常相似的是,request.getLocale没有工作,但session.getLocale确实工作。

代码:

代码语言:javascript
代码运行次数:0
运行
复制
Locale locale = request.getLocale();
log.debug("MainUI init! locale: {}", locale);
messageByLocaleService.setLocale(locale);

另一个相反的问题是:other question

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47182221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档