JSF h:inputText Validierung und f:ajax render
Eine sehr einfache JSF-applicaton:
- InputText-element zugeordnet ist, mit Validator.
- f:ajax gerendert nächste element (phoneNumber) mit
blur
Veranstaltung. - Telefonnummer wird nur angezeigt, wenn inputText übergeben Sie die Prüfung und isValid boolean-Wert auf true festgelegt ist
Hier ist das code-snippet
<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;
}
Das problem ist, dass aus irgendeinem Grund, die Telefonnummer ist nicht gerendert überhaupt.
Nur so, dass ich es machen kann, zu arbeiten, indem Sie f:ajax render @form
<h:inputText id="name" maxlength="9" styleClass="ordLabelNarrow"
validator="#{person.validateSecurityCode}"
value="#{person.name}">
<f:ajax render="@form" event="blur"/>
</h:inputText>
Entfernen oder gerendert aus phoneNumber
rendered="#{person.isValid}"
Für einige Grund, f:ajax mit bestimmten element-Id und gerendert, basierend auf managedBean Attribut können nicht co-existieren.
Jede Idee oder Rat, Jungs?
HINWEIS: dieses Verhalten auch passieren, wenn ich mit Hörer statt validator
InformationsquelleAutor lawardy | 2010-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
f:ajax
betreibt auf der client-Seite. Das element, das angegeben ist inrender
muss bereits vorhanden sein, in der client-Seite HTML-DOM-Baum. Setzen Sie es zum Beispiel einh:panelGroup
stattdessen wird immer gerendert, um die client-Seite.InformationsquelleAutor BalusC