This content has been marked as final.
Show 2 replies
-
1. Re: one question about Interceptor
norman.richards Jan 21, 2007 11:05 AM (in response to diyun2008)You can't change the return type of a Java method. If the method doesn't return a value then you can't suddenly decide to return a string in an interceptor.
-
2. Re: one question about Interceptor
diyun2008 Jan 21, 2007 11:13 AM (in response to diyun2008)You probably misunderstand.
The comlete code is here:import javax.faces.event.PhaseId; import org.jboss.seam.annotations.Interceptor; import org.jboss.seam.contexts.Contexts; import org.jboss.seam.contexts.Lifecycle; import org.jboss.seam.interceptors.BijectionInterceptor; import org.jboss.seam.interceptors.BusinessProcessInterceptor; import org.jboss.seam.interceptors.ConversationInterceptor; import org.jboss.seam.interceptors.RemoveInterceptor; import org.jboss.seam.interceptors.ValidationInterceptor; @Interceptor(around={BijectionInterceptor.class, ValidationInterceptor.class, ConversationInterceptor.class, BusinessProcessInterceptor.class}, within=RemoveInterceptor.class) public class LoggedInInterceptor { @AroundInvoke public Object checkLoggedIn(InvocationContext invocation) throws Exception { boolean isLoggedIn = Contexts.getSessionContext().get("loggedIn")!=null; if ( Lifecycle.getPhaseId()==PhaseId.INVOKE_APPLICATION ) { if (isLoggedIn) { return invocation.proceed(); } else { return "login"; } } else { if ( isLoggedIn ) { return invocation.proceed(); } else { Method method = invocation.getMethod(); if ( method.getReturnType().equals(void.class) ) { return null; } else { return method.invoke( invocation.getTarget(), invocation.getParameters() ); } } } } }