我的应用程序包括几个部分.我想通过更改我所有应用程序中的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