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

Schreibe einen Kommentar