Vaadin 自定义错误消息
Vaadin Web 框架针对任何未捕获的异常显示红色错误警报:
内部错误
请通知管理员
...
Vaadin 文档介绍了 如何设置自定义错误处理程序。
当我提供自定义错误处理程序时,默认的红色错误警报仍然显示。当用户消除该错误警报时,就会出现自定义错误警报。我只想显示自定义错误警报。如何禁用默认的“内部错误”警报?
下面是我的 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);
} }
The Vaadin web framework displays a red error alert for any uncaught exceptions:
Internal error
Please notify the administrator
...
The Vaadin documentation describes how to set a custom error handler.
When I provide a custom error handler, the default red error alert still shows up. When the user dismisses that error alert, then the custom error alert appears. I would like to only show the custom error alert. How can one disable the default "Internal error" alert?
Below is the overridden terminalError method of my vaadin Application class:
@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);
} }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您必须在 Application 类中定义一个名为 getSystemMessages 的静态方法,它将返回一个 CustomizedSystemMessages 对象。如果您使用 false 参数调用 setInternalErrorNotificationEnabled 方法,“内部错误”将会消失。这样您也可以禁用 Vaadin 针对其他错误类型的内置通知消息。
您可以通过调用 setInternalErrorURL 来提供一个 url,以便 Vaadin 在发生内部错误时将您的页面重定向到该 url。您可以在该页面中显示错误消息。该页面也可以是 Vaadin 窗口。
You have to define a static method called getSystemMessages in your Application class, which will return a CustomizedSystemMessages object. If you call setInternalErrorNotificationEnabled method with false parameter "internal error" will disappear. This way you can disable Vaadin's built-in notification messages for other error types as well.
You can provide a url by calling setInternalErrorURL so that Vaadin will redirect your page to that url whenever internal error occurs. You can display your error message in that page. This page could be a Vaadin window as well.
这两个操作是否都是因为调用
super.terminalError(event)
才发生的?或者您是否必须清除 在这个方法中设置?
Do both actions happens because you call
super.terminalError(event)
?Or do you have to clear the component error that is set in this method?
保罗是对的:你必须删除对 super 的调用。
为了工作,我在 Application 的子类中执行了以下操作:
并重写了terminalError方法,而不调用
super.terminalError()
。问候,埃里克
Paul is right : you have to remove the call to the super.
To work, I did the following in my subclass of Application :
and I override the terminalError method without the call to
super.terminalError()
.Regards, Éric