Ich habe eine Hierarchie von Modellklassen in meiner Spring / Hibernate-Anwendung.
Gibt es beim Senden eines POST-Formulars an einen Spring MVC-Controller eine Standardmethode zum Angeben des Typs des gesendeten Objekts, sodass Spring die richtige Unterklasse des Typs initialisieren kann, der in @ModelAttribute oder @RequestParam der empfangenden Methode deklariert wurde?
Zum Beispiel:
%Vor%Jackson kann JESON als spezifischen Subtyp mit der @ JsonTypeInfo-Annotation deserialisieren. Ich hoffe, dass Spring dasselbe tun kann.
Jackson kann JSON als einen spezifischen Subtyp deserialisieren @JsonTypeInfo-Annotation. Ich hoffe, dass Spring dasselbe tun kann.
Angenommen, Sie verwenden Jackson für die Typumwandlung (Spring verwendet Jackson automatisch, wenn es im Klassenpfad gefunden wird und Sie <mvc:annotation-driven/>
in Ihrem XML haben), dann hat das nichts mit Spring zu tun. Notieren Sie die Typen und Jackson wird die korrekten Klassen instanziieren. Trotzdem müssen Sie instanceof
in Ihrer Spring MVC-Controller-Methode überprüfen.
Aktualisierung nach Kommentaren:
Sehen Sie sich 15.3 an .2.12 Anpassen der WebDataBinder-Initialisierung . Sie könnten eine @InitBinder
-Methode verwenden, die einen Editor basierend auf einem Anfrageparameter registriert:
Tags und Links java inheritance jackson binding spring-mvc