Jsf 是否可以从@ManagedBean截取一个方法?如果没有,还有其他选择吗?
我是JSF-2和CDI的新手(我来自SpringWorld) 我想从@ManagedBean截取一个方法,但从未调用我的截取器类。有可能吗 LogInterceptor.javaJsf 是否可以从@ManagedBean截取一个方法?如果没有,还有其他选择吗?,jsf,jsf-2,cdi,interceptor,managed-bean,Jsf,Jsf 2,Cdi,Interceptor,Managed Bean,我是JSF-2和CDI的新手(我来自SpringWorld) 我想从@ManagedBean截取一个方法,但从未调用我的截取器类。有可能吗 LogInterceptor.java @Interceptor public class LogInterceptor { @AroundInvoke public Object log(InvocationContext ctx) throws Exception { System.out.println("begin
@Interceptor
public class LogInterceptor {
@AroundInvoke
public Object log(InvocationContext ctx) throws Exception {
System.out.println("begin method interceptor");
Object methodReturn = ctx.proceed();
System.out.println("end method interceptor");
return methodReturn;
}
}
RoleMB
@ManagedBean
@ViewScoped
public class RoleMB extends BaseMB {
@Interceptors(LogInterceptor.class)
public void preEditRole(Role role) {
...
}
}
beans.xml
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<interceptors>
<class>br.com.preventsenior.services.log.LogInterceptor</class>
</interceptors>
</beans>
br.com.preventsenior.services.log.LogInterceptor
从不调用
日志(InvocationContext ctx)
javaee拦截器只在CDI管理的bean和ejb上工作,而不在JSF管理的bean上工作
因此,您基本上有两种选择:
@Named
等)更改JSFBean管理注释很好的响应,在JSF2.2中,所有JSF bean都应该是CDIBeans,所以在JavaEE7中这不会是一个问题。我们也可以在JSF2.1中这样做,不是吗,@LightGuard?2.2中是否有其他变化?@DavidS:jsf2.2引入了一个新的作用域,它与
@ManagedBean
不向后兼容,因此暗示它们不再支持@ManagedBean
。在JavaEE9或可能已经是JavaEE8中,它将被弃用。