JSF 不更新某些支持 bean 属性
Posted
技术标签:
【中文标题】JSF 不更新某些支持 bean 属性【英文标题】:JSF not updating certain backing bean properties 【发布时间】:2011-06-26 02:43:31 【问题描述】:我正在一个项目中工作,该项目使用 JSF 2.0 和 PrimeFaces 2.2 。 目前我们正在使用一个向导(PrimeFaces 组件)来指导用户完成注册过程。我们在向导中有 4 个步骤。
问题出在这里:在第一步中,用户输入了他/她的个人详细信息,并且在 backing 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);
我已经用尽了所有可能的解决方案......所以,如果有人至少有一个模糊的想法,那么它是有效的。 谢谢!
【问题讨论】:
【参考方案1】:目前所提供的信息很难确定根本原因。至少一个可能的原因:输入字段的父组件之一具有rendered
属性,该属性在要收集输入值的点评估false
。确保rendered
条件在表单提交期间的评估结果与在表单显示期间的评估结果相同。
【讨论】:
感谢您的回复。我怎样才能确保这一点?但是,我不确定这是否是问题,因为其他步骤正常工作。以上是关于JSF 不更新某些支持 bean 属性的主要内容,如果未能解决你的问题,请参考以下文章
为什么GlassFish 5.1.0中的JSF将我的@ViewScoped CDI bean的ID属性设置为null?