Adressierung abgeschnittener Pfadvariablen in Spring MVC mit @PathVariable
Problem:
Während der Verwendung Spring MVC mit @PathVariable für die RESTful-API-Entwicklung wurde beobachtet, dass Pfadvariablen, die Sonderzeichen enthalten, abgeschnitten werden. Insbesondere wenn eine Pfadvariable wie „blah2010.08.19-02:25:47“ bereitgestellt wird, wird nur der Teil bis zum ersten Punkt (d. h. „blah2010.08“) von @PathVariable erfasst.
Ursache:
Standardmäßig behandelt Spring MVC @PathVariable-Argumente als einfache Zeichenfolgen und erwartet, dass sie bestimmte Formatierungsregeln für URL-Parameter befolgen. Zu diesen Regeln gehören Beschränkungen der in Pfadvariablen zulässigen Zeichen, wobei Sonderzeichen wie Punkte und Bindestriche als Werttrennzeichen interpretiert werden. Folglich schneidet Spring die Pfadvariable beim ersten Vorkommen eines ungültigen Zeichens ab.
Lösung:
Um zu verhindern, dass Spring @PathVariable-Werte abschneidet, ist es notwendig, dies explizit zu tun Geben Sie an, dass das Argument einen größeren Zeichenbereich akzeptieren soll. Dies kann durch die Verwendung eines regulären Ausdrucks in der @RequestMapping-Annotation erreicht werden.
Um beispielsweise zuzulassen, dass Pfadvariablen Punkte, Bindestriche und andere Sonderzeichen enthalten, kann der folgende reguläre Ausdruck verwendet werden:
@RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName:.+}")
Das Suffix „.“ im regulären Ausdruck gibt an, dass die Pfadvariable {blahName} mit jeder nicht leeren Zeichenfolge übereinstimmen sollte, wodurch effektiv alle Zeichen im bereitgestellten Pfad erfasst werden.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit abgeschnittenen Pfadvariablen mit Sonderzeichen in Spring MVC @PathVariable um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!