我正在使用JSF 2.1与CDI和JBoss 7.1.1如何从超类转换为由CDI注入的字段中的派生类?
是否可以将CDI注入超类变量principal
并转换为派生类?在示例MyUserPrincipal
是派生类。如果我编写@Inject Principal principal
我知道从调试(和重载toString()方法)MyUserPrincipal
代理类将被注入变量principal
。但我无法将此实例投射到MyUserPrincipal
实例。
下面我2次尝试解决问题:
public class MyUserPrincipal implements Principal, Serializible{
MyUserPrincipal (String name){
}
public myMethod() { }
}
//Attempt 1:
public class MyCdiClass2 implements Serializable{
//MyUserPrincipal proxy instance will be injected.
@Inject Principal principal;
@PostConstruct init() {
MyUserPrincipal myPrincipal = (MyUserPrincipal) pincipal; //<--- Fails to cast! (b)
myPrincipal.myMethod();
}
}
//Attempt 2:
public class MyCdiClass1 implements Serializable{
@Inject MyUserPrincipal myPrincipal; //<---- Fails to inject! (a)
@PostConstruct init() {
//do something with myPrincipal
}
}
您是否有MyUserPrincipal的生产者方法? –
不,MyUserPrincipal正在启动从登录容器类(UsernamePasswordLoginModule)衍生而来,并来自登录容器(JBoss-Authentication)。 – Tony