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);
} }
答案 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