ManagedProperty / Bean注入导致NullPointer

时间:2013-12-15 18:07:53

标签: java jsf java-ee code-injection

在@RequestScoped bean中,我需要另一个@ViewScoped的bean。

所以我试过了:

@ManagedBean
@RequestScoped
public class RequestBean
{
  @ManagedProperty( value = "#{viewBean}" )
  private ViewBean viewBean;

  public void setViewBean(...){...}

  public void doSomething(){
     // ...
  }
}

方法doSomething()由buttonClick调用并执行一些ImageStreaming(这是我的Bean被RequestScoped的原因)。 注入本身在第一时间工作正常,但是一旦调用了doSomething(),我就会遇到这个异常:

com.sun.faces.mgbean.ManagedBeanCreationException: Could not determine property viewBean for managed bean requestBean

(翻译的消息,可能会略有不同)

   at com.sun.faces.mgbean.ManagedBeanBuilder$BakedBeanProperty.set(ManagedBeanBuilder.java:615)
   ...
Caused by: java.lang.NullPointerException
   at com.sun.faces.mgbean.BeanManager$ScopeManager$ViewScopeHandler.getFromScope(BeanManager.java:563)
   ...

...当你忘记实现setter方法时,这几乎是一样的。 这有什么不对?

1 个答案:

答案 0 :(得分:1)

我建议你尝试使用CDI,你有一个ConversationalScope,允许你有一个类似的View Scoped,你可以用简单的@Inject注释注入bean