Binden Sie Pfadvariablen im Frühjahr an ein benutzerdefiniertes Modellobjekt
Habe ich eine Klasse, die models mein Wunsch, so etwas wie
class Venue {
private String city;
private string place;
//Respective getters and setters.
}
Und ich will zu unterstützen, die einen Erholsamen URL, um Informationen über einen Ort. Also ich habe controller-Methode wie diese.
@RequestMapping(value = "/venue/{city}/{place}", method = "GET")
public String getVenueDetails(@PathVariable("city") String city, @PathVariable("place") String place, Model model) {
//code
}
Gibt es eine Möglichkeit, ich kann sagen, im Frühjahr zu binden meiner path-Variablen auf das Modell-Objekt (in diesem Fall Veranstaltungsort), anstatt jeden einzelnen parameter?
InformationsquelleAutor der Frage Senthil Babu | 2013-06-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Spring MVC
bietet die Möglichkeit zum binden von request-params-und Pfad-Variablen in eine JavaBean, die in Ihrem Fall istVenue
.Zum Beispiel:
Beachten Sie, dass Sie Ihre JavaBean hat
city
undplace
Eigenschaften für Sie zu arbeiten.Für weitere Informationen, können Sie einen Blick auf die withParamGroup () - Beispiel von spring-Projekten/spring-mvc-showcase
InformationsquelleAutor der Antwort Liang Zhou
Könnten Sie eine Implementierung der
HandlerMethodArgumentResolver
- Schnittstelle. Diese Schnittstelle wird hauptsächlich verwendet, um Argumente, um Ihre controller-Methoden in einer Weise, dass der Frühling nicht (das ist im wesentlichen, was Sie zu tun versuchen). Sie erreichen dies durch die Implementierung dieser beiden Methoden:Können Sie injizieren Ihre Umsetzung in den Frühling Kontext über:
Wenn der Frühling auf einen parameter, den er nicht auflösen kann, wird Sie rufen Sie Ihre Methode
supportsParameter()
zu sehen, wenn Ihr resolver auflösen kann der parameter. Wenn Methode true zurückgibt, dann wird der Frühling rufen Sie IhrenresolveArgument()
Methode, um tatsächlich zu lösen, die parameter. In dieser Methode haben Sie Zugriff auf die NativeWebRequest Objekt, das Sie verwenden können, um schnappen Sie sich den Weg über den contextPath. (in deinem Fall wäre es:/venue/{city}/{place}
)Sie können analysieren, durch die Anfrage Weg und versuchen, den Stadt - /Ort-Strings
zum Auffüllen in Ihrem Ort Objekt.
InformationsquelleAutor der Antwort Paul Gray
Gemäß der Spring-Dokumentation auf http://static.springsource.org/spring/docs/3.2.3.RELEASE/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-uri-templatesautomatische Unterstützung wird bereitgestellt, um die Typen einfach nur:
Ich habe nicht versucht, diese spezifische Kombination von
@RequestParam
undModel
aber es sieht aus wie Sie können, um die gewünschten Umsetzung durch die Erstellung einer benutzerdefiniertenWebBindingInitializer
Details zu http://static.springsource.org/spring/docs/3.2.3.RELEASE/spring-framework-reference/html/mvc.html#mvc-ann-typeconversion.Die individuelle Klasse haben Sie Zugriff auf das WebRequest und zurückkehren würde, ein domain-Objekt mit Daten gefüllt, extrahiert aus diesen Antrag.
InformationsquelleAutor der Antwort vincentks