Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Vaadin自定义错误消息_Java_Vaadin - Fatal编程技术网

Java Vaadin自定义错误消息

Java Vaadin自定义错误消息,java,vaadin,Java,Vaadin,对于任何未捕获的异常,Vaadin web framework将显示红色错误警报: 内部错误 请通知管理员 Vaadin文档描述了 当我提供自定义错误处理程序时,默认的红色错误警报仍然显示。当用户解除该错误警报时,将显示自定义错误警报。我只想显示自定义错误警报。如何禁用默认的“内部错误”警报 下面是我的vaadin应用程序类的重写terminalError方法: @Override public void terminalError(Terminal.ErrorEvent event) {

对于任何未捕获的异常,Vaadin web framework将显示红色错误警报:

内部错误

请通知管理员

Vaadin文档描述了

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

下面是我的vaadin应用程序类的重写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);
    }   }

这两个操作是否都是因为调用了super.terminalError(事件)


或者您必须清除组件错误吗?

Paul是对的:您必须删除对super的调用

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

setErrorHandler(this); // dont know why it's doesn't work without this instruction.
我重写terminalError方法,而不调用
super.terminalError()


关于,赤道

您必须在应用程序类中定义一个名为getSystemMessages的静态方法,该方法将返回一个CustomizedSystemMessages对象。如果调用带有假参数的setInternalErrorNotificationEnabled方法,“internal error”将消失。通过这种方式,您还可以对其他错误类型禁用Vaadin的内置通知消息


您可以通过调用setInternalErrorURL来提供url,这样每当出现内部错误时,Vaadin就会将页面重定向到该url。您可以在该页面中显示错误消息。这个页面也可以是一个Vaadin窗口。

我已经调用了super.terminalError(事件)并设置了setErrorHandler(此);在init()方法中。它仍然显示内置的“内部错误”消息。我的terminalError方法没有得到调用,因为我可以看到它的日志语句。即使我注释掉对super.terminalError(事件)的调用,它也会显示内置的“内部错误”。当我使用您发布的链接中使用的terminalError(Terminal.ErrorEvent事件)方法时,它仍然会显示内置的“内部错误”不抱歉。我引用该方法是为了向您显示它正在设置组件错误。我的问题是你能消除/清除那个错误吗?与
setComponentError(null)
类似。setComponentError没有任何效果。我注意到,有时我确实会看到自定义错误对话框,而有时会看到内置的“内部错误”对话框。当从Button.ClickListener内部类中引发异常时,将显示“自定义错误”对话框。但是当从DefaultAbsoluteLayoutDropHandler内部类中引发异常时,会出现内置对话框