我试图拦截对JSF IUComponents的所有调用,但这不起作用:

@Pointcut("execution(* javax.faces.component.UIComponent+.encode*(..))")
   private void interceptor() { }

@Around("interceptor()")
public void aroundMethod(ProceedingJoinPoint joinPoint) {
   System.out.println("******** Hello from Interceptor Method! **********");
}


但是,当我更改切入点时,这很完美:

@Pointcut("execution(* com.hsa.business.*.*(..))")
   private void interceptor() { }

@Around("interceptor()")
public void aroundMethod(ProceedingJoinPoint joinPoint) {
   System.out.println("******** Hello from Interceptor Method! **********");
}


这是我在xml中显示的信息:

<bean id="dummyAspect" class="com.hsa.security.aspectj.JSFComponentSecurityAspect" />
<aop:aspectj-autoproxy />


和:

<application>
 <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</elresolver>
</application>


请帮忙...?

最佳答案

我希望您在与AOP自动代理和方面相同的Spring上下文中,没有可分配给javax.faces.component.UIComponent的类型的Spring Bean,因此没有发生任何事情。当Spring启动一个上下文时,它将在INFO级别记录该上下文中的所有bean。检查其中包含“ dummyAspect”的上下文,并查看UI组件是否也在那里。

10-06 12:53