Mein Controller
%Vor%Der Tag
%Vor%Diese Methode funktioniert, aber es ist ziemlich hässlich für mich. Angenommen, der Benutzer hat gerade das Vornamenfeld in der Ansicht geändert. Wie kann ich meinen Code so anpassen, dass er nur die Funktion zum Vornamen aufruft?
Etwas wie das Observer-Muster, um das Feld zu benachrichtigen, das eine Änderung hat?
Ich nehme an, dass Ihr Code so funktioniert:
Ein Benutzer möchte einige Daten seines user entity
ändern. Im Frontend zeigt man ihm bereits alle Einträge aus der Benutzertabelle der DB wie Vorname, Nachname usw. an.
Zum Beispiel hat der Benutzer seinen Vornamen geändert und die Speichern-Taste gedrückt. Ihr Controller erhält die Benutzerentität einschließlich der Benutzer-ID, des neuen Vornamens und aller alten festgelegten Werte . Wenn Ihr Code so funktioniert, können Sie einfach save()
der Benutzereinheit eingeben. Sie müssen den Benutzer nicht zuerst aus der Datenbank holen.
Mach es einfach so:
%Vor% Das Repository
kennt die ID der Benutzereinheit und aktualisiert nur die vollständige Entität.
Und aus dem Grund, dass Sie nicht die ID in Ihrer Benutzereinheit verwenden, verwenden Sie die ID von Ihrem Controller wie folgt:
%Vor% Wenn Sie Hibernate verwenden, gibt es ein Attribut im Ruhezustand dynamicUpdate = true
, das nur aktualisierte Felder in db
wie unter Code
%Vor%für hibenrate 4 + verwenden Sie diese
%Vor%Angenommen, dies ist Ihr Benutzer.
%Vor%Dann können Sie in Ihrer jsp-Seite etwas wie unten tun.
%Vor%Und wieder in deinem dao kannst du den Null-Check setzen
%Vor%Bitte beachten Sie, dass dieser Code nicht getestet wurde und auf Downvotes wartet.
Tags und Links java model-view-controller spring