我的申请由几个部分组成。我想通过更改我所有应用程序中的 URL 来防止用户更改区域设置,除了一个小的 GWT 位置。我需要在 URL 中为该位置提供语言环境,以确保该位置以正确的语言加载。
我能做什么?
我看到以下选项:
1) 从那个地方创建单独的模块,并允许在该模块的 xml 设置文件中使用 queryparam 作为语言环境的来源。据我所知,我需要放下一些东西,比如 <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();
}
});
Run Code Online (Sandbox Code Playgroud)
它可以工作,但问题在于延迟调用:如果我使用它,页面会加载,然后重新加载信号出现并在页面显示后重新加载。用户观察到奇怪的闪烁。如果我不使用延迟调用,则不会设置 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" />
Run Code Online (Sandbox Code Playgroud)
也参考
1) GWT i18n,更改 metaTag 并重新加载应用程序
2) https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale
3) http://learninggwt.blogspot.in/2011/07/gwt-internationalization-and-cookies.html
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |