Optionale Pfad-Variablen in der Spring-MVC-RequestMapping URITemplate
Habe ich die folgende Zuordnung:
@RequestMapping(value = "/{first}/**/{last}", method = RequestMethod.GET)
public String test(@PathVariable("first") String first, @PathVariable("last")
String last) {}
Welche für die folgenden URIs:
foo/a/b/c/d/e/f/g/h/bar
foo/a/bar
foo/bar
maps foo erste und bar letzten und funktioniert einwandfrei.
Was ich möchte, ist etwas, was Karten alles zwischen foo und bar in einem einzigen Pfad param, oder null, wenn es keine Mitte (wie in der letzten URI-Beispiel):
@RequestMapping(value = "/{first}/{middle:[some regex here?]}/{last}",
method = RequestMethod.GET)
public String test(@PathVariable("first") String first, @PathVariable("middle")
String middle, @PathVariable("last") String last) {}
Ziemlich fest auf dem regex, da war ich in der Hoffnung, dass so etwas einfaches wie {Mitte:.*}, die nur maps /foo/a/bar oder {Mitte:(.*/)*}, das scheint die Karte zu nichts.
Macht die AntPathStringMatcher die tokenisierung auf "/" vor der Anwendung von regex-mustern? (Herstellung von mustern, die durch eine /unmöglich) oder gibt es eine Lösung?
FYI dies ist im Frühjahr 3.1M2
Diese scheinen ähnlich zu @RequestMapping-Controller und dynamische URLs aber ich habe es nicht eine Lösung gibt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In meinem Projekt verwende ich die innere variable in das springframework:
Sehen HandlerMapping.html#URI_TEMPLATE_VARIABLES_ATTRIBUTE
Kann nicht getan werden, soweit ich weiß. Nur, wie gesagt, der reguläre Ausdruck angewendet wird, um das Pfad-element, die nach der Teilung der Pfad bei jeder Schrägstrich, also der reguläre Ausdruck kann nie mit einem '/'.
Könnten Sie manuell überprüfen Sie die url und analysieren Sie es selbst aus dem request-Objekt.
Es getan werden könnte, indem Sie einen benutzerdefinierten Pfad matcher und Konfiguration von Spring zu verwenden. Zum Beispiel, solch eine Lösung ist hier dokumentiert: http://java.dzone.com/articles/spring-3-webmvc-optional-path
Den link stellt einen benutzerdefinierten Pfad matcher und zeigt, wie Sie den Frühling, um es zu verwenden. Das sollte lösen müssen, wenn Sie nichts dagegen haben, schreiben Sie eine benutzerdefinierte Komponente.
Dies ist auch ein Duplikat des Mit Spring 3.0, kann ich einen optionalen Pfad-variable?
versuchen, diese
array Liste der vorhandenen url-spezifische Methode
Aber vorsichtig sein, auf erstellen einer Liste von url wenn Sie mit @PathVariable in deiner Signatur der Methode kann es nicht null sein.
hoffe, dass dies helfen