3
組件通過值綁定連接到輔助bean屬性。輔助bean中的更改值未反映在UI中
<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中綁定的屬性的值,並且因爲我有一個掛鉤到實際組件更改組件的值和提交值以確保(找到問題),並且仍然不會在UI中反映更改?
任何想法??
情況是,第一一些驗證發生並在最後如果驗證是確定,但該數目是9位,而不是10必須被編輯爲包含領先0我離開了額外的驗證爲了簡潔起見,但是根本不可能在驗證方法中編輯這個值嗎?需要我爲驗證器方法提供一個轉換器嗎?我知道這是更清潔的,但我想知道在jsf生命週期中是否可以在技術上做到這一點? – nkr1pt 2010-12-07 14:25:27