@Override
protected void init(VaadinRequest request) {
VaadinService.getCurrent().setSystemMessagesProvider(
new SystemMessagesProvider() {
@Override
public SystemMessages getSystemMessages(
SystemMessagesInfo systemMessagesInfo) {
CustomizedSystemMessages messages = new CustomizedSystemMessages();
messages.setCommunicationErrorCaption("通信错误");
messages.setCommunicationErrorMessage("服务器端停止或重启");
messages.setCommunicationErrorNotificationEnabled(true);
messages.setCommunicationErrorURL("http://www.com.cn");
messages.setSessionExpiredCaption("会话超时");
messages.setSessionExpiredMessage("刷新浏览器,重新建立连接。");
return messages;
}
});
this.setContent(new LoginWindow(this));
}
https://vaadin.com/forum#!/thread/2606638 给出的方法适合vaadin6,在vaadin7下不起作用。
Book of Vaadin里都有写
https://vaadin.com/book/-/page/application.errors.html
, 简单总结一下,分下面几步。
- 自定义一个Servlet,继承VaadinServlet
public class MyCustomeServlet extends VaadinServlet
- Override servletInitialized 方法
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
getService().setSystemMessagesProvider(
new SystemMessagesProvider() {
@Override
public SystemMessages getSystemMessages(
SystemMessagesInfo systemMessagesInfo) {
CustomizedSystemMessages messages =
new CustomizedSystemMessages();
messages.setCommunicationErrorCaption("通信错误");
messages.setCommunicationErrorMessage("服务器端停止或重启");
messages.setCommunicationErrorNotificationEnabled(true);
messages.setCommunicationErrorURL("http://www.com.cn");
messages.setSessionExpiredCaption("会话超时");
messages.setSessionExpiredMessage("刷新浏览器,重新建立连接。");
return messages;
}
});
;
- 在web.xml里设置使用自定义的MyCustomeServlet
<servlet-class>com.example.MyCustomeServlet</servlet-class>
按照你的方法,可以了,谢谢。