Vaadin自定义错误消息

时间:2011-09-19 21:47:31

标签: java vaadin

Vaadin Web框架显示任何未捕获的异常的红色错误警报:

  

内部错误

     

请通知管理员

     

...

Vaadin文档描述了how to set a custom error handler

当我提供自定义错误处理程序时,仍会显示默认的红色错误警报。当用户解除该错误警报时,将显示自定义错误警报。我只想显示自定义错误提醒。如何禁用默认的“内部错误”警报?

以下是我的vaadin Application类的重写的terminalError方法:

@Override   public void terminalError(Terminal.ErrorEvent event) {
    // Call the default implementation.
    super.terminalError(event);

    // Some custom behaviour.
    if (getMainWindow() != null) {
        getMainWindow().showNotification(
                "An unchecked exception occured!",
                event.getThrowable().toString(),
                Notification.TYPE_ERROR_MESSAGE);
    }   }

3 个答案:

答案 0 :(得分:2)

您必须在Application类中定义一个名为 getSystemMessages 的静态方法,该方法将返回 CustomizedSystemMessages 对象。如果使用false参数调用 setInternalErrorNotificationEnabled 方法,则“内部错误”将消失。这样您就可以为其他错误类型禁用Vaadin的内置通知消息。

您可以通过调用 setInternalErrorURL 来提供网址,以便Vaadin会在发生内部错误时将您的网页重定向到该网址。您可以在该页面中显示错误消息。这个页面也可以是Vaadin窗口。

答案 1 :(得分:1)

这两个操作都是因为您拨打super.terminalError(event)

而发生的

或者您是否必须清除set in this method的组件错误?

答案 2 :(得分:0)

保罗是对的:你必须删除对超级电话的调用。

为了工作,我在我的应用程序子类中执行了以下操作:

setErrorHandler(this); // dont know why it's doesn't work without this instruction.

并且我覆盖了terminalError方法而没有调用super.terminalError()

问候,Éric