Gibt es eine Möglichkeit, den vollständigen Pfadwert nach dem zu erhalten? requestMapping
@PathVariable
Werte analysiert wurden?
Das heißt:
/{id}/{restOfTheUrl}
sollte /1/dir1/dir2/file.html
in id=1
und analysieren könnenrestOfTheUrl=/dir1/dir2/file.html
Irgendwelche Ideen wären willkommen.
spring
spring-mvc
request-mapping
Frühlingsaffe
quelle
quelle
restOfTheUrl
wird der gesamte Pfad sein, nicht nur der verbleibende Teil, der von**
Ich habe gerade das Problem gefunden, das meinem Problem entspricht. Mit HandlerMapping-Konstanten konnte ich ein kleines Dienstprogramm für diesen Zweck schreiben:
quelle
Dies ist schon eine ganze Weile hier, aber ich poste dies. Könnte für jemanden nützlich sein.
quelle
Aufbauend auf Fabien Krubas bereits ausgezeichneter Antwort hielt ich es für schön, wenn der
**
Teil der URL über eine Annotation als Parameter für die Controller-Methode angegeben werden könnte, ähnlich wie@RequestParam
und@PathVariable
nicht immer mit einer Utility-Methode die ausdrücklich dieHttpServletRequest
. Hier ist ein Beispiel, wie dies implementiert werden könnte. Hoffentlich findet es jemand nützlich.Erstellen Sie die Anmerkung zusammen mit dem Argumentauflöser:
Registrieren Sie den Methodenargument-Resolver:
Verwenden Sie die Annotation in Ihren Controller-Handler-Methoden, um einfachen Zugriff auf den
**
Teil der URL zu erhalten:quelle
Sie müssen Folgendes verwenden
pathMatcher
:quelle
Ich habe den Tuckey URLRewriteFilter verwendet, um Pfadelemente zu verarbeiten, die '/' Zeichen enthalten, da ich glaube, dass Spring 3 MVC sie noch nicht unterstützt.
http://www.tuckey.org/
Sie fügen diesen Filter in Ihre App ein und stellen eine XML-Konfigurationsdatei bereit. In dieser Datei stellen Sie Umschreiberegeln bereit, mit denen Sie Pfadelemente mit '/' Zeichen in Anforderungsparameter übersetzen können, mit denen Spring MVC mithilfe von @RequestParam ordnungsgemäß umgehen kann.
WEB-INF / web.xml:
WEB-INF / urlrewrite.xml:
Controller-Methode:
quelle
Ja, das
restOfTheUrl
gibt nicht nur den erforderlichen Wert zurück, sondern wir können den Wert mithilfe von ermittelnUriTemplate
Matching ermitteln.Ich habe das Problem gelöst, also hier die funktionierende Lösung für das Problem:
quelle
Hier ist, wie ich es gemacht habe. Sie können sehen, wie ich die angeforderte URL in einen Dateisystempfad konvertiere (worum es in dieser SO-Frage geht). Bonus: und auch, wie man mit der Datei antwortet.
quelle
quelle
Ich habe ein ähnliches Problem und habe es folgendermaßen gelöst:
Beachten Sie, dass
req.getPathInfo()
der vollständige Pfad (mit{siteCode}
und{fileName}.{fileExtension}
) zurückgegeben wird, sodass Sie ihn bequem verarbeiten müssen.quelle