0

我们每 2/3 天进行一次修补程序/新版本,因此我们的用户经常遇到烦人的“此应用程序已过时”消息。因此,在我们开发出一种方法来检查应用程序是否过时并强制重新加载之前,我们至少希望将消息国际化,因为我们的大多数用户都没有使用该应用程序的英文版本并且看起来很奇怪。

有没有办法让 i18n 显示“此应用程序已过期”消息?

编辑:据我所知,虽然我还没有尝试过,但也许IncompatibleRemoteServiceException在那里捕捉并做 I18n 可以做到这一点。但是我们有很多 RPC 调用......有没有更好的(是的,我的意思是更容易和更快)的方式?

4

2 回答 2

2

IncompatibleRemoteServiceException您可以使用 s 全局捕获s GWT.UncaughtExceptionHandler。在那里,使用instanceof IncompatibleRemoteServiceException检查并以任何方式向用户显示任何错误消息(例如,Google Groups 使用与“正在加载...”和“您的消息已发送”指示符相同的“气泡”,以及“重新加载”关联)。

当然,那是如果你AsyncCallback的 s 重新抛出异常。

于 2013-06-21T10:07:05.247 回答
0

我终于找到了一种更好的方法(至少对于我的工作流程而言)。它包括不通知用户重新加载,而是避免它。

我这样做的方法是强制浏览器不缓存 *noncache.js 文件。这可以通过创建过滤器并将其添加到应用程序 web.xml 来完成。以下是doFilter()代码。

if (requestURI.contains(".nocache.")) {
 Date now = new Date();
 HttpServletResponse httpResponse = (HttpServletResponse) response;
 httpResponse.setHeader("Pragma", "no-cache");
 httpResponse.setHeader("Cache-control", "no-cache, no-store, must-revalidate");
}
filterChain.doFilter(request, response);

然后,只需添加过滤器映射即可<url-pattern>/*</url-pattern>!对用户的透明更改:D

希望这可以帮助。

于 2014-05-22T12:06:28.687 回答