为什么CustomizedSystemMessages设置不起作用?


@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
, 简单总结一下,分下面几步。

  1. 自定义一个Servlet,继承VaadinServlet public class MyCustomeServlet extends VaadinServlet
  2. 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;
			    }
			});
    ;
  1. 在web.xml里设置使用自定义的MyCustomeServlet
<servlet-class>com.example.MyCustomeServlet</servlet-class>

按照你的方法,可以了,谢谢。