Seam - @In身份识别不注入&抛出nullpointer异常

时间:2010-08-02 10:49:19

标签: servlets jboss seam nullpointerexception

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

2 个答案:

答案 0 :(得分:1)

一些想法:

  • 您是否在Seam组件中注入了Identity?
  • Seam无法在构造函数内部注入。
  • 您的components.xml中是否有这些片段?

<core:init security-enabled="true" />

<security:identity />

答案 1 :(得分:1)

Seam在调用构造函数之前不会注入变量,因此Seam注入属性在构造函数中为null - 因此是NPE。

不是在构造函数中引用Seam注入属性,而是创建一个新方法(如init())并使用@Create注释对其进行注释。然后,在实例化对象并设置了Seam注入属性后,将自动调用此方法。

希望这有帮助,

克里斯

相关问题