我正在使用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