gpt4 book ai didi

jsf-2 - 静默 FullAjaxExceptionHandler

转载 作者:行者123 更新时间:2023-12-04 14:59:57 27 4
gpt4 key购买 nike

所以在面对可怕的javax.faces.application.ViewExpiredException之后,我不得不在互联网上寻找合适的解决方案。幸运的是,这些解决方案随时可用,我继续采用了 OmniFaces FullAjaxExceptionHandler .

话不多说,就像 OmniFaces 的几乎所有东西一样,它创造了奇迹。但是,每次我有一个 View 到期时,我都会得到:

SEVERE: WebModule[/myModule]FullAjaxExceptionHandler: An exception occurred during processing JSF ajax request. Error page '/WEB-INF/errorpages/test.xhtml' will be shown.
javax.faces.application.ViewExpiredException: viewId:/my/page.xhtml - View /my/page.xhtml could not be restored.
...

这很好,因为它按预期处理,但是 有没有办法让这个异常被打印到 server.log ?这会很快挤满日志。

我在运行 :
莫哈拉 2.1.23
PrimeFaces 4.0-快照
OmniFaces 1.6-快照-2013-07-01


Glassfish 3.1.2.2

最佳答案

根据 OmniFaces 1.6,您可以扩展它并覆盖方法 logException() 如下跳过 ViewExpiredException 的堆栈跟踪.

public class YourAjaxExceptionHandler extends FullAjaxExceptionHandler {

public YourAjaxExceptionHandler(ExceptionHandler wrapped) {
super(wrapped);
}

@Override
protected void logException(FacesContext context, Throwable exception, String location, String message, Object... parameters) {
if (exception instanceof ViewExpiredException) {
// With exception==null, no trace will be logged.
super.logException(context, null, location, message, parameters);
}
else {
super.logException(context, exception, location, message, parameters);
}
}

}

在它周围创建一个工厂:
public class YourAjaxExceptionHandlerFactory extends ExceptionHandlerFactory {

private ExceptionHandlerFactory wrapped;

public YourAjaxExceptionHandlerFactory(ExceptionHandlerFactory wrapped) {
this.wrapped = wrapped;
}

@Override
public ExceptionHandler getExceptionHandler() {
return new YourAjaxExceptionHandler(getWrapped().getExceptionHandler());
}

@Override
public ExceptionHandlerFactory getWrapped() {
return wrapped;
}

}

为了让它运行,在 faces-config.xml 中将它注册为工厂通常的方式(不要忘记删除 FullAjaxExceptionHandlerFactory 的原始注册):

<factory>
<exception-handler-factory>com.example.YourExceptionHandlerFactory</exception-handler-factory>
</factory>

关于jsf-2 - 静默 FullAjaxExceptionHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com