我试图在我的拦截器中使用@aroundInvoke,检查一些validationX以继续执行该方法,或者将用户REDIRECT到特定的JSF页面。
@AroundInvoke
public Object myInterceptor(InvocationContext invocation) throws Exception {
if(validationX){//it passes the validation so proceed
return invocation.proceed();
}else{//it doesnt passes the validation so go to
//DO SOMETHING TO REDIRECT TO SPECIFIC JSF
}
}
我试过了:
提前致谢!
答案 0 :(得分:3)
Java EE拦截器不是故意的。它旨在用于决定是否继续调用当前CDI / EJB bean方法(如果需要,抛出异常以中止它),和/或控制/操纵其返回值。它并不打算充当JSF控制器。为此,应该使用普通的JSF托管bean。
或者,如果这涉及特殊情况,那么您应该抛出一个特定的异常并在<error-page>
中注册web.xml
的确切异常类型。如果您可以挂钩特定的URL而不是特定的方法调用,另一种方法是用简单的servlet filter来执行作业。
作为您incorrectly认为这是正确解决方案的具体功能要求,问题不明确,不能给出更详细的答案。