2011-01-16 10 views
0

Ich bin neu bei Wicket. Kann mir bitte jemand sagen, wie man required auf false dynamisch einstellt? Hier ist mein Code:Wie dynamisch ändern erforderlich, um falsch

AjaxButton cancel=new AjaxButton("cancel"){ 
    public void onSubmit(AjaxRequestTarget target, Form form){ 
     passwrd.setRequired(false); 
     nameField.setRequired(false); 
     usernameField.setRequired(false); 
     LecturerPage lecturer=new LecturerPage(); 
     setResponsePage(lecturer); 
    } 
}; 
addstud.add(cancel); 

Tomcat sagt mir, dass mein Feedback Panel unrendered gelassen zu werden (meine OK-Taste Verwendung eines Feedback-Panel macht).

Antwort

5

Die onSubmit() - Methode wird nur ausgeführt, nachdem alle Validierung erfolgt ist, so dass dieser Code nicht einmal ausgeführt wird.

Sie benötigen jedoch häufig einige Aktionen, die ohne Validierung ausgeführt werden (wie Ihre 'Abbrechen'-Schaltfläche). Sie können, dass

cancel.setDefaultFormProcessing(false); 

Auf diese Weise ruft tun, Wicket wird Validierung und Form Aktualisierung ignorieren und die onSubmit() -Methode sofort auszuführen.

Dann würde der Code wie folgt aussehen:

AjaxButton cancel = new AjaxButton("cancel") { 
    public void onSubmit(AjaxRequestTarget target, Form form){ 
     setResponsePage(new LecturerPage()); 
    } 
}; 
cancel.setDefaultFormProcessing(false); 

Wicket uns über das Feedback beklagen nicht geschieht gemacht, weil, da Sie nicht setDefaultFormProcessing (false) aufgerufen haben, wird es die Form verarbeiten, versuchen Sie, validiere seine Felder und finde Fehler. Und am Ende des Anfragezyklus wurden die Fehlermeldungen nirgendwo angezeigt, da Sie nicht aufgefordert haben, das FeedbackPanel erneut zu rendern. Um Validierungsfehler in AJAX-Formularen anzuzeigen, müssen Sie die AjaxButton.onError() -Methode überschreiben:

+0

Vielen Dank! –