Existe-t-il un moyen d'obtenir la valeur du chemin complet après que les requestMapping
@PathVariable
valeurs ont été analysées?
C'est:
/{id}/{restOfTheUrl}
devrait être en mesure d'analyser /1/dir1/dir2/file.html
dans id=1
etrestOfTheUrl=/dir1/dir2/file.html
Toute idée serait appréciée.
spring
spring-mvc
request-mapping
Singe de printemps
la source
la source
restOfTheUrl
sera le chemin complet, pas seulement la partie restante capturée par**
Je viens de trouver ce problème correspondant à mon problème. En utilisant les constantes HandlerMapping, j'ai pu écrire un petit utilitaire à cet effet:
la source
Cela a été ici un certain temps, mais en affichant cela. Cela pourrait être utile pour quelqu'un.
la source
En me basant sur la réponse déjà excellente de Fabien Kruba , j'ai pensé que ce serait bien si la
**
partie de l'URL pouvait être donnée comme paramètre à la méthode du contrôleur via une annotation, d'une manière similaire à@RequestParam
et@PathVariable
, plutôt que d'utiliser toujours une méthode utilitaire qui exigeait explicitement leHttpServletRequest
. Voici donc un exemple de la façon dont cela pourrait être mis en œuvre. Espérons que quelqu'un le trouve utile.Créez l'annotation, ainsi que le résolveur d'arguments:
Enregistrez le résolveur d'arguments de méthode:
Utilisez l'annotation dans vos méthodes de gestionnaire de contrôleur pour accéder facilement à la
**
partie de l'URL:la source
Vous devez utiliser intégré
pathMatcher
:la source
J'ai utilisé l'URLRewriteFilter de Tuckey pour gérer les éléments de chemin contenant des caractères '/', car je ne pense pas que Spring 3 MVC les supporte encore.
http://www.tuckey.org/
Vous placez ce filtre dans votre application et fournissez un fichier de configuration XML. Dans ce fichier, vous fournissez des règles de réécriture, que vous pouvez utiliser pour traduire les éléments de chemin contenant les caractères '/' en paramètres de requête que Spring MVC peut traiter correctement en utilisant @RequestParam.
WEB-INF / web.xml:
WEB-INF / urlrewrite.xml:
Méthode de contrôleur:
la source
Oui, le
restOfTheUrl
ne renvoie pas uniquement la valeur requise mais nous pouvons obtenir la valeur en utilisant laUriTemplate
correspondance.J'ai résolu le problème, alors voici la solution de travail pour le problème:
la source
Voici comment je l'ai fait. Vous pouvez voir comment je convertis l'URI demandée en chemin de système de fichiers (sur quoi porte cette question SO). Bonus: et aussi comment répondre avec le fichier.
la source
la source
J'ai un problème similaire et je l'ai résolu de cette manière:
Notez que
req.getPathInfo()
retournera le chemin complet (avec{siteCode}
et{fileName}.{fileExtension}
), vous devrez donc traiter facilement.la source