我正在使用Seam 2.0,我的bean中有一个实例变量
@In Identity identity
当我使用identity.getUserName()
时,它会抛出NullPointerException
。有人能告诉我,我在这里还缺少什么吗?
更新:我已经定义了bean实例变量,如下所示:
@In Identity identity;
然后在我的bean构造函数中,我只需添加以下行来欢迎用户 -
System.out.println("Welcome - " +identity.getUsername());
我在Jboss控制台上看到以下错误:
Caused by: java.lang.NullPointerException
at com.lntebg.quality.QualityInspectionPlan.<init>(QualityInspectionPlan.java:63)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.jboss.seam.Component.instantiateJavaBean(Component.java:1315)
at org.jboss.seam.Component.instantiate(Component.java:1271)
at org.jboss.seam.Component.newInstance(Component.java:1973)
... 279 more
答案 0 :(得分:1)
一些想法:
<core:init security-enabled="true" />
和
<security:identity />
答案 1 :(得分:1)
Seam在调用构造函数之前不会注入变量,因此Seam注入属性在构造函数中为null - 因此是NPE。
不是在构造函数中引用Seam注入属性,而是创建一个新方法(如init())并使用@Create注释对其进行注释。然后,在实例化对象并设置了Seam注入属性后,将自动调用此方法。
希望这有帮助,
克里斯