2009-07-30 4 views
1

Ist es möglich, den vorherigen Wert des Kontrollkästchens zusammen mit dem neuen Wert zu haben?Wie kann ich im Frühjahr den vorherigen Wert der Checkbox haben?

Mein Problem ist, ich muss etwas Code ausführen, nur wenn der Wert des Kontrollkästchens wahr ist, auch wenn es bereits wahr war, dann nehme ich nicht an, die gleiche Aktion erneut auszuführen. Momentan mache ich, für jede Checkbox habe ich auch einen früheren Werthalter. Wenn der Wert nur geändert wird, führe ich die Aktion aus (und trifft zu) und setze den Wert des vorherigen Werthalters auf den neuen Wert.

+0

Wo soll die Aktion auf der Serverseite oder auf der Clientseite ausgeführt werden? Ist es eine Ajax-basierte Aktion oder eine Seitenvorlage? –

+0

Arun, ich möchte das auf der Serverseite haben, –

Antwort

0

Sie können dem Kontrollkästchen einen Änderungslistener hinzufügen. Wenn das Kontrollkästchen den Status ändert, können Sie direkt Ihren speziellen Code aufrufen.

Oder wenn Sie eine Einstellungsseite haben, in der sich das Ankreuzfeld befindet, müssen Sie den Status der Einstellungsseite speichern und prüfen, ob Sie den Status geändert haben.

0

Verwenden Sie die Spring-Mvc-JSP-Tablib- oder Velocity/Freemarker-Makros?

Wenn ja, sollten sie ein verstecktes Feld mit dem vorhandenen Wert des Kontrollkästchens im HTML mit einem Unterstrich "_" vor ihm ausgeben. Spring hilft dabei festzustellen, ob das Kontrollkästchen deaktiviert oder einfach nicht gesendet wurde.

Sie sollten dieses versteckte Feld für Ihre Zwecke verwenden können, d. H. Sie können nach dem Wert des ausgeblendeten Felds suchen und dieses mit dem tatsächlichen Feldwert des Kontrollkästchens vergleichen.

Siehe Spring MVC 2.5 Checkbox tag

0

Um dies zu tun richtig benötigen Sie den Vergleich zu tun, ohne auf der Client-Seite zu verlassen den alten Wert zu erfassen, wie diese Manipulation ermöglichen kann.

Beim Senden erstellt Spring MVC die alte Version des Befehls neu, bevor sie mit den neuen Werten aktualisiert wird, die vom Client gesendet wurden. Sie müssen den alten Wert irgendwo speichern, bevor die Bindephase beginnt.

Um dies zu tun, in der formBackingObject-Methode (die nach einem POST-Senden erneut aufgerufen wird), legen Sie eine Kopie des Werts im Anfrageobjekt. Dann können Sie in der onSubmit-Methode den Wert aus der Anfrage für den Vergleich abrufen. Sie könnten es auch in einem anderen Feld des Befehls aufzeichnen.

Ich finde diese SimpleFormController cheat sheet sehr hilfreich, um die Ausführungsreihenfolge der Methoden herauszufinden. Es sollte dir auch hier helfen.