2011-02-12 84 views
0

我正在使用JSF 2.0和PrimeFaces 2.2的項目中工作。 目前我們正在使用嚮導(PrimeFaces組件)來引導用戶完成註冊過程。我們在嚮導中有4個步驟。JSF不更新某些支持bean屬性

問題出在這裏:在第一步中,用戶輸入他/她的個人詳細信息,並在支持bean中正確更新。 第2步只是一堆文本,第3步提供了另一個輸入額外信息的表單。

但是在步驟3中,數據未在輔助bean中更新,並且屬性保留爲空。 我已經嘗試了一些解決方法,但什麼都沒有改變......

好,這裏是代碼的相關部分:

  <p:tab id="three" title="Passo 3" > 
         <p:panel header="Sua saúde financeira"> 
          <p:messages /> 
          <h:panelGrid cellpadding="5" columns="2"> 
           <h:outputText value="Você possui alguma reserva? (Dinheiro não investido, coloque 0,00 se não tiver reserva) " /> 
           <h:panelGrid cellpadding="5" columns="2"> 
            <p:inputText id="reserva" value="#{userWizard.actualMoneyReserve}" size="5" required="true" /> <h:outputText value=" reais." /> 
           </h:panelGrid> 
           <h:outputText value="Qual o valor que você planeja investir por mês? (0,00 se não tiver um planejamento) " /> 
           <h:panelGrid cellpadding="5" columns="2"> 
            <p:inputText id="valormensal" value="#{userWizard.monthlyInvestment}" size="5" required="true" /> <h:outputText value=" reais." /> 
           </h:panelGrid> 
           <h:outputText value="Qual o valor do seu salário atual? " /> 
           <h:panelGrid cellpadding="5" columns="2"> 
            <p:inputText id="salario" value="#{userWizard.salary}" size="5" required="true" /> <h:outputText value=" reais." /> 
           </h:panelGrid> 
           <h:outputText value="Quanto você gasta por mês ? " /> 
           <h:panelGrid cellpadding="5" columns="2"> 
            <p:inputText id="gastomensal" value="#{userWizard.lifeCost}" size="5" required="true" /> <h:outputText value=" reais." /> 
           </h:panelGrid> 
          </h:panelGrid> 
         </p:panel> 
        </p:tab> 

這是從視圖和支持bean:

 private String actualMoneyReserve; 
    private String monthlyInvestment; 
    private String salary; 
    private String lifeCost; public void save() { 
    //Persist user 

    this.moneyHealth.setActualMoneyReserve(actualMoneyReserve); 
    this.moneyHealth.setLifeCost(lifeCost); 
    this.moneyHealth.setMonthlyInvestment(monthlyInvestment); 
    this.moneyHealth.setSalary(salary); 

    this.user.setMoneyHealth(this.moneyHealth); 
    JOptionPane.showMessageDialog(null, this.actualMoneyReserve); 
    JOptionPane.showMessageDialog(null, this.moneyHealth.getActualMoneyReserve()); 

    GenericDAO<User> gd = new GenericDAO<User>(User.class); 
    gd.persist(user); 
} 

我已經用盡了所有可能的解決方案...所以如果有人至少有一個模糊的想法,這是有效的。 謝謝!

回答

0

很難用迄今爲止給出的信息來初始化根本原因。至少有一個可能原因:輸入字段的父組件之一具有rendered屬性,該屬性在要收集輸入值的位置評估false。確保rendered條件在表單提交過程中與在表單顯示過程中評估相同。

+0

感謝您的回覆。我如何確保?但是,我不確定這是否是因爲另一步正常工作的問題。 –