2011-09-04 87 views
1

我編寫了一個小應用程序,您可以在其中註冊和編輯您的數據。爲了真實性,我使用了一個名爲Authenticity的bean類。這個類包含Customer(它是一個數據庫實體)的對象以及登錄和註銷的方法。JSF 2.0編輯用戶szenario

現在我創建了一個用於編輯用戶的頁面:一個包含許多inputText的表單,其值爲authenticity.curUser./(properties)。它看起來像這樣:

 <h:form> 
     <h:panelGrid columns="2" cellpadding="4px" width="600"> 
      <h:outputText value="firstname:" /> 
      <h:inputText value="#{authenticity.curUser.firstname}"/> 

      <h:outputText value="lastname:"/> 
      <h:inputText value="#{authenticity.curUser.lastname}" /> 

      <h:outputText value="street:"/> 
      <h:inputText value="#{authenticity.curUser.street}" /> 

      <h:outputText value="housebumber"/> 
      <h:inputText value="#{authenticity.curUser.housenumber}" /> 

      <h:outputText value="Zip:"/> 
      <h:inputText value="#{authenticity.curUser.zip}" /> 

      <h:outputText value="City:"/> 
      <h:inputText value="#{authenticity.curUser.city}" /> 

      <h:outputText value="Land"/> 
      <h:inputText value="#{authenticity.curUser.country}" /> 

      <h:outputText value="email:"/> 
      <h:inputText value="#{authenticity.curUser.email}" /> 

      <h:outputText value="password:"/> 
      <h:inputSecret value="#{authenticity.curUser.password}" /> 
      <h:commandButton action="#{authenticity.editUser}" value="Edit" /> 
     </h:panelGrid> 
    </h:form> 

我現在的問題是是否有更好的解決方案來解決這個問題。 AuthenticityBean應該真的能夠編輯用戶嗎?或者我應該創建一個額外的bean?

回答

2

我會使用一個完全獨立的視圖範圍的bean,它包含代表登錄用戶的實體的全新副本。只有當表單被成功編輯並保存後,才能替換當前登錄的用戶(表單bean可以作爲@ManagedProperty訪問它)。

如果您在表單中重複使用同一個實體,想象你是ajax更新一些字段,然後取消/關閉表單。當前登錄的用戶將在會話的剩餘部分中仍然存在「錯誤」字段值。這是不正確的。

+0

謝謝你的好建議! – GreenPepper

+0

不客氣。 – BalusC