正常 AND ajax 请求的异常处理程序,用于记录目的
Exception Handler for normal AND ajax request for logging purpose
谁能给我一个 ExceptionHandler
的工作示例,它为 正常和 ajax 请求 扩展了 ExceptionHandlerWrapper
。我不想使用过滤器。我希望我所有的异常处理都在一个入口处以用于记录目的。
在 Omnifaces 中,我们有 FullAjaxExceptionHandler
但 只有 用于 ajax 请求。我如何重构此 class 以考虑两种类型的请求?
为了在我的 CustomExceptionHandler 中呈现错误页面,我在一个实用程序方法中使用了这样一条语句来标识请求的类型(正常或 ajax)
if (context.getPartialViewContext().isAjaxRequest()) {
ViewHandler viewHandler = context.getApplication().getViewHandler();
UIViewRoot viewRoot = viewHandler.createView(context, errorPageLocation);
context.setViewRoot(viewRoot);
context.getPartialViewContext().setRenderAll(true);
context.renderResponse();
} else {
NavigationHandler nav = context.getApplication().getNavigationHandler();
nav.handleNavigation(context, null, errorPageLocation);
context.renderResponse();
}
通过这种方式,我可以在我的 CustomExceptionHandler 中有效地处理这两个请求
在你可以使用的Wrapper中,如果你想检测请求的类型:
context == null || !context.getPartialViewContext().isAjaxRequest()
还建议您将 WrapperHandler 与 Deltaspike Exception Control
集成
最后是一种通用的重定向方式(适用于两种类型的请求):
public static void redirect(FacesContext fc, String view) {
ExternalContext ec = fc.getExternalContext();
String path = ec.encodeResourceURL(fc.getApplication().getViewHandler().getActionURL(fc, view));
try {
ec.redirect(path);
} catch(Exception e) {
throw new RuntimeException();
}
}
谁能给我一个 ExceptionHandler
的工作示例,它为 正常和 ajax 请求 扩展了 ExceptionHandlerWrapper
。我不想使用过滤器。我希望我所有的异常处理都在一个入口处以用于记录目的。
在 Omnifaces 中,我们有 FullAjaxExceptionHandler
但 只有 用于 ajax 请求。我如何重构此 class 以考虑两种类型的请求?
为了在我的 CustomExceptionHandler 中呈现错误页面,我在一个实用程序方法中使用了这样一条语句来标识请求的类型(正常或 ajax)
if (context.getPartialViewContext().isAjaxRequest()) {
ViewHandler viewHandler = context.getApplication().getViewHandler();
UIViewRoot viewRoot = viewHandler.createView(context, errorPageLocation);
context.setViewRoot(viewRoot);
context.getPartialViewContext().setRenderAll(true);
context.renderResponse();
} else {
NavigationHandler nav = context.getApplication().getNavigationHandler();
nav.handleNavigation(context, null, errorPageLocation);
context.renderResponse();
}
通过这种方式,我可以在我的 CustomExceptionHandler 中有效地处理这两个请求
在你可以使用的Wrapper中,如果你想检测请求的类型:
context == null || !context.getPartialViewContext().isAjaxRequest()
还建议您将 WrapperHandler 与 Deltaspike Exception Control
集成最后是一种通用的重定向方式(适用于两种类型的请求):
public static void redirect(FacesContext fc, String view) {
ExternalContext ec = fc.getExternalContext();
String path = ec.encodeResourceURL(fc.getApplication().getViewHandler().getActionURL(fc, view));
try {
ec.redirect(path);
} catch(Exception e) {
throw new RuntimeException();
}
}