【发布时间】:2013-08-29 03:08:09
【问题描述】:
我将 JSF 2.1 与 CDI 和 JBoss 7.1.1 一起使用
是否可以在超类变量principal 中注入 CDI 并转换为派生类?例如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)。
标签: java dependency-injection jboss7.x cdi inject