2009-12-17 43 views
0

我幾乎可以確定我做錯了什麼,因此問題的標題有點不正確。如何強制jsf創建bean的新實例而不是拋出NullPointerException?

我有一個窗體,有幾個字段用於創建一個新的用戶對象(如登錄,密碼,生日等字段)。我有2個按鈕 - 取消和創建。我沒有完成創建:),但是當我按下取消時,我看到NullPointerException。這裏被簡化代碼:

<f:view> 
    <h:form> 
     <h:panelGroup layout="block">  
      <h:inputText id="add_login" value="#{userSupport.user.login}"/> 
      <h:inputSecret id="add_password" value="#{userSupport.user.password}"/> 
      <h:inputText id="add_name" value="#{userSupport.user.name}"/> 
      <h:inputText id="add_surname" value="#{userSupport.user.surname}"/> 

      <h:commandButton value="Cancel" action="cancel"/> 
     </h:panelGroup> 
    </h:form> 
</f:view> 

UserSupport類與getter和setter和其他一些方法場user。它是一個具有Session範圍的Spring bean。

當我按取消時,我看到NPE,因爲jsf試圖保存來自用戶對象輸入的值,但用戶對象爲空。

這樣做的正確方法是什麼?

回答

1

在您的取消按鈕集immediate="true" 這將跳過所有「不需要」的階段。

但是,您的「創建」按鈕會出現同樣的問題,您不應該在那裏使用immediate。 更好地初始化user屬性 - 無論是在構造函數中,還是在執行初始化操作的方法上使用@PostConstruct批註。

相關問題