【发布时间】:2010-12-07 14:07:03
【问题描述】:
组件通过值绑定连接到支持 bean 属性。
<h:inputText id="number" value="#{backingBean.number}" validator="#{backingBean.validateNumber}" />
在验证方法中数值发生了变化
public void validateNumber(FacesContext facesContext, UIComponent component, Object value) {
String inputValue = (String) value;
if (inputValue.length() == 9) {
inputValue = "0" + inputValue;
((UIInput) component).setSubmittedValue(inputValue);
((UIInput) component).setValue(inputValue);
setNumber(inputValue);
}
}
在调试时,我可以验证该值实际上正在更改,但在渲染阶段,新值会以某种方式被旧值覆盖。 这一定与我对 JSF 生命周期的误解有关,但是我看到它的方式是同时更改 UI 中绑定到组件的属性的值 op,并且因为我对实际组件有一个钩子,所以我也更改了确定组件的值和提交的值(以找到问题),但更改仍未反映在 UI 中?
有什么想法吗??
【问题讨论】: