2013-12-15 95 views
1

在@RequestScoped bean中,我需要另一個@ViewScoped bean。ManagedProperty/Bean注入導致NullPointer

所以,我想:

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

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

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

的方法DoSomething的()是由一個名爲buttonClick和執行一些ImageStreaming(這是我的豆的原因而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

嘗試把一個getter方法注入的bean。 –

+0

獲得者已經存在。 –

+0

您的ViewBean名稱爲「viewBean」嗎?默認情況下它應該是..但是請嘗試@ManagedBean(name =「viewBean」) –

回答

1

我建議你嘗試使用CDI你有一個ConversationalScope,可以讓你有一個類似的觀點作用域,你可以用簡單的@Inject註解

+0

我編輯我的答案,對不起但困惑,但你可以在RequestScoped中注入一個ViewScoped bean,相反是錯誤的,抱歉我的錯誤。 –