在@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方法时,这几乎是一样的。 这有什么不对?
答案 0 :(得分:1)
我建议你尝试使用CDI,你有一个ConversationalScope,允许你有一个类似的View Scoped,你可以用简单的@Inject注释注入bean