Seam - @In Идентификационная идентификация не вводит и выдает исключение нулевого указателя - PullRequest
0 голосов
/ 02 августа 2010

Я использую Seam 2.0, и внутри моего компонента есть переменная экземпляра как

@In Identity identity 

и когда я использую identity.getUserName(), он выбрасывает NullPointerException. Может кто-нибудь сказать мне, пожалуйста, что я здесь упускаю дополнительно?


Обновление : Я определил переменную экземпляра компонента, как показано ниже:

@In Identity identity;

Затем в конструкторе бина я просто добавил строку ниже, чтобы приветствовать пользователя -

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 ]

1 голос
/ 28 февраля 2011

Seam не внедряет переменные до тех пор, пока не будет вызван конструктор, и поэтому свойство Inaged Seam в конструкторе равно нулю - отсюда NPE.

Вместо ссылки на свойство Inam, внедренное вконструктор, создайте новый метод, такой как init (), и аннотируйте его аннотацией @Create.Затем этот метод будет вызываться автоматически после создания экземпляра объекта и установки свойств внедрения Seam.

Надеюсь, это поможет,

Крис

1 голос
/ 03 августа 2010

Некоторые идеи:

  • Вы вводите идентификацию внутри компонента Seam?
  • Шов не может быть введен внутри конструктора.
  • Есть ли у вас эти фрагменты в вашем файле components.xml?

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

и

<security:identity />

...