Übermittelte Formularwerte werden im Modell nicht aktualisiert, wenn <f: ajax> zu <h: commandButton> hinzugefügt wird

Ich lerne, wie man Ajax in jsf verwendet. Ich habe eine Seite erstellt, die eigentlich nichts tut, einen Eingabetext, der mit einer Zahl gefüllt ist, der an den Server gesendet wird, den Setter für dieses Element mit dem übergebenen Wert aufruft und den Getter anzeigt Wert.

Hier ist der Code der einfachen Bohne:

@ManagedBean(name="helper",eager=true)
public class HealthPlanHelper {


    String random = "1";

    public void setRandomize(String s){
        random = s;
                System.out.println("Calling setter");
    }

    public String getRandomize(){
        return random;
    }

}

Und die jsf Seite:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core">
<h:head></h:head>
<h:body>

    <h:form>
        <h:commandButton action="nothing">
            <f:ajax render="num"/>
        </h:commandButton>

        <h:inputText value="#{helper.randomize}" id="num"/>
    </h:form>

</h:body>
</html>

Wie Sie sehen, handelt es sich um ein Request-Scoped-Bean. Wenn ich auf die Schaltfläche klicke, zeigt der Server an, dass eine Instanz des Beans erstellt wird. Die Setter-Methode wird jedoch nie aufgerufen. Daher gibt der Getter immer "1" als Wert des zurück Zeichenfolge.

Wenn ich den entferne, wird der Setter normal aufgerufen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage