bardzo prosty JSF applicaton:JSF H: Walidacja inputText f Ajax czyni
- inputText element jest przyporządkowany Weryfikator.
- f: ajax służy do renderowania następnego elementu (phoneNumber) przy użyciu zdarzenia
blur
. - PhoneNumber będzie wyświetlany tylko wtedy, gdy inputText przechodzą walidatora i IsValid wartość logiczną ma wartość true
Oto fragment kodu
<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;
}
Problemem jest to, z jakiegoś powodu numer telefonu nie jest w ogóle renderowany.
Jedyny sposób, że mogę zrobić to praca jest zmiana f: ajax do renderowania @form
<h:inputText id="name" maxlength="9" styleClass="ordLabelNarrow"
validator="#{person.validateSecurityCode}"
value="#{person.name}">
<f:ajax render="@form" event="blur"/>
</h:inputText>
lub usunąć renderowane PhoneNumber
rendered="#{person.isValid}"
Z jakiegoś powodu f: ajax konkretnym Identyfikator elementu i wyrenderowany na podstawie atrybutu managedBean nie może współistnieć.
Czy masz pomysł czy rady?
UWAGA: To zachowanie się zdarzyć również, gdy używam słuchacza zamiast walidator