我们每2/3天做一次修补程序/新版本,因此我们的用户经常遇到令人讨厌的“此应用程序已过期”消息。因此,在我们开发一种方法来检查应用程序是否已过期并强制重新加载之前,我们至少会将消息国际化,因为我们的大多数用户都没有使用应用程序的英文版,看起来很奇怪。 / p>
有没有办法让i18n“此应用程序已过期”消息?
编辑:据我所知,虽然我还没有尝试过,但是可能会抓住IncompatibleRemoteServiceException
并且执行I18n可以做到这一点。但是我们有很多RPC调用......有没有更好的(是的,我的意思是更简单,更快)?
答案 0 :(得分:2)
您可以使用GWT.UncaughtExceptionHandler
全局捕捉IncompatibleRemoteServiceException
。在那里,使用instanceof IncompatibleRemoteServiceException
检查并以任何方式向用户显示任何错误消息(例如Google Groups使用与“正在加载...”和“您的消息已发送”指示符相同的“气泡”使用“重新加载”链接。
当然,那就是你的AsyncCallback
重新抛出异常。
答案 1 :(得分:0)
我终于找到了一个更好的方法(至少对我的工作流程而言)。它不在于通知用户重新加载,而是避免重复加载。
我这样做的方法是强制浏览器不要缓存* noncache.js文件。这可以通过创建过滤器并将其添加到app 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
希望这有帮助。