6
一個非常簡單的JSF的一個應用:JSF H:inputText的驗證和f:AJAX渲染
- inputText的元件被分配了驗證。
- f:ajax通過使用
blur
事件來渲染下一個元素(phoneNumber)。如果inputText的通過驗證和的isValid布爾值 - ******中國將只顯示被設置爲true
這裏是代碼片段
<h:form id="invOrdersWizForm">
<h:inputText id="name" maxlength="9" styleClass="ordLabelNarrow"
validator="#{person.validatePerson}"
value="#{person.name}">
<f:ajax render="phoneLabel" event="blur"/>
</h:inputText>
<h:outputText id="phoneLabel"
rendered="#{person.isValid}"
styleClass="ordLabelWide" value="#{person.phoneNumber}" />
</h:form>
ManagedBean
public void validatePerson(FacesContext context, UIComponent toValidate, Object value) {
name = ((String) value).toUpperCase();
phoneNumber = "12345678";
isValid = true;
}
的問題是,出於某種原因,phoneNumber根本沒有被渲染。
,我可以讓它工作的唯一方法是通過改變F:AJAX渲染@form
<h:inputText id="name" maxlength="9" styleClass="ordLabelNarrow"
validator="#{person.validateSecurityCode}"
value="#{person.name}">
<f:ajax render="@form" event="blur"/>
</h:inputText>
或者從phoneNumber的
rendered="#{person.isValid}"
移除渲染出於某種原因,F:阿賈克斯具體元素Id並基於managedBean屬性呈現不能共存。
任何想法或建議傢伙?
注:當我使用監聽器,而不是驗證這種行爲也發生