blo*_*p3r 6 glassfish jsf-2 omnifaces
所以在面对可怕的事情后javax.faces.application.ViewExpiredException
,我不得不环顾互联网寻找合适的解决方案.幸运的是,解决方案随时可用,我继续采用OmniFaces FullAjaxExceptionHandler.
足够说,就像OmniFaces的几乎所有东西一样,它创造了奇迹.但是,每当我有一个视图到期时,我会得到:
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.
...
Run Code Online (Sandbox Code Playgroud)
这很好,因为它是按预期处理的,但无论如何要将这个异常打印到server.log?这会快速占用日志.
我正在运行:
Mojarra 2.1.23
PrimeFaces 4.0-SNAPSHOT
OmniFaces 1.6-SNAPSHOT-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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
围绕它创建一个工厂:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
为了使其运行,请faces-config.xml
以通常的方式将其注册为工厂(不要忘记删除原始注册FullAjaxExceptionHandlerFactory
):
<factory>
<exception-handler-factory>com.example.YourExceptionHandlerFactory</exception-handler-factory>
</factory>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
693 次 |
最近记录: |