java-如何在不使用queryParam的情况下设置GWT语言环境onLoad?

我的应用程序包括几个部分.我想通过更改我所有应用程序中的URL(一个小GWT位置除外)来防止用户更改语言环境.我需要在URL中提供该位置的语言环境,以确保该位置以正确的语言加载.

我能做什么?

我看到以下选项:

1)从该位置创建单独的模块,并允许使用queryparam作为该模块的xml设置文件中的语言环境源.据我了解,我需要填写< set-configuration-property name =“ locale.searchorder” value =“ queryparam,cookie” />
可能会起作用,但是对于这么小的任务来说有点困难.

2)另一个选择是手动实现所需的功能.我写了以下代码:

String languageCode = Window.Location.getParameter("lang");
Cookies.setCookie(COOKIE_NAME, languageCode, new Date(System.currentTimeMillis() * 1000 * 3600 * 24 * 365 * 100));
Scheduler.get().scheduleDeferred(new ScheduledCommand()
{
    @Override
    public void execute()
    {
        Window.Location.reload();
    }
});

它可以工作,但是问题在于延迟调用:如果我使用它,则页面会加载,然后会出现重载信号,并且在显示页面后开始重新加载.用户观察到奇怪的闪烁.如果我不使用延迟调用,则未设置cookie,我不知道为什么(请您解释一下).

那么,您将如何解决此任务?

解决方法:

我们避免在GWT代码中设置Cookie.相反,我们根据用户操作或设置在登录页面中设置cookie,然后重定向到GWT应用程序.

步骤1-登录-JSP页面设置cookie并进行身份验证.

第2步-成功后,将URL指向托管GWT应用程序的html文件.

第3步-GWT仅需要通过模块xml文件读取cookie信息.

在您的.gwt.xml文件中,提供Login jsp设置的cookie.

<set-configuration-property name="locale.cookie" value="GWT_LOCALE" />

也参考

1)GWT i18n, change metaTag and reload application

2)https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale

3)http://learninggwt.blogspot.in/2011/07/gwt-internationalization-and-cookies.html

上一篇:java-如何从Android上的Locale对象获取脚本?


下一篇:Android-如何在左侧抽屉中使用西里尔字母