Kann ich mit Spring 3.0 eine optionale Pfadvariable haben?
Beispielsweise
@RequestMapping(value = "/json/{type}", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@PathVariable String type,
@RequestParam("track") String track) {
return new TestBean();
}
Hier möchte /json/abc
oder möchte ich /json
die gleiche Methode aufrufen.
Eine offensichtliche Problemumgehung type
als Anforderungsparameter deklarieren :
@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@RequestParam(value = "type", required = false) String type,
@RequestParam("track") String track) {
return new TestBean();
}
und dann /json?type=abc&track=aa
oder /json?track=rr
wird funktionieren
@RequestMapping
zwei Werte wie in: stackoverflow.com/questions/17821731/…@PathVariable
zu@RequestParam
Wenn Sie mit Spring 4.1 und Java 8 können Sie verwenden ,
java.util.Optional
die in unterstützt wird@RequestParam
,@PathVariable
,@RequestHeader
und@MatrixVariable
in Spring MVC -quelle
"/json/{type}"
und der Typ nicht vorhanden ist, wird er nicht getroffen (wie meine verlinkte Antwort andeutet), aber hier haben Sievalue = {"/json/{type}", "/json" }
. Wenn also eine mit der Controller-Methode übereinstimmt, wird sie getroffen.@PathVariable(required = false)
null abrufen, wenn die Variable nicht vorhanden ist.Es ist nicht bekannt, dass Sie auch eine Map der Pfadvariablen mit der Annotation @PathVariable einfügen können. Ich bin nicht sicher, ob diese Funktion in Spring 3.0 verfügbar ist oder später hinzugefügt wurde, aber hier ist eine andere Möglichkeit, das Beispiel zu lösen:
quelle
Sie könnten verwenden:
für optionale Parameter anstelle einer pathVariable
quelle
Beispiele für Spring 5 / Spring Boot 2:
Blockierung
reaktiv
quelle
Vereinfachtes Beispiel für Nicolai Ehmanns Kommentar und Wildloops Antwort (funktioniert mit Spring 4.3.3+), im Grunde können Sie
required = false
jetzt verwenden:quelle
Überprüfen Sie diese Spring 3 WebMVC - Optionale Pfadvariablen . Es enthält einen Artikel zum Erstellen einer Erweiterung für AntPathMatcher, um optionale Pfadvariablen zu aktivieren, und kann hilfreich sein. Alle Credits an Sebastian Herold für die Veröffentlichung des Artikels.
quelle
quelle