1

我正在一个项目中使用 JSF 2.0 和 PrimeFaces 2.2 。目前我们正在使用一个向导(PrimeFaces 组件)来指导用户完成注册过程。我们在向导中有 4 个步骤。

这就是问题所在:在第一步中,用户输入了他/她的个人详细信息,并且在支持 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);
}

我已经用尽了所有可能的解决方案......所以,如果有人至少有一个模糊的想法,那么它是有效的。谢谢!

4

1 回答 1

0

很难用目前提供的信息确定根本原因。至少一个可能的原因:输入字段的父组件之一具有在要收集输入值的点rendered进行评估的属性。false确保rendered条件在表单提交期间的评估与在表单显示期间的评估相同。

于 2011-02-12T20:01:11.037 回答