我的应用程序由几个部分组成。我想通过在我的所有应用程序中更改 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();
}
});
它可以工作,但问题在于延迟调用:如果我使用它,页面会加载,然后重新加载信号会在页面显示后开始重新加载。用户观察到奇怪的闪烁。如果我不使用延迟调用,cookie 没有设置,我不知道为什么(你能解释一下吗?)。
那么你将如何解决这个任务呢?