Maison  >  Article  >  Java  >  Comment gérer les variables de chemin tronqué avec des caractères spéciaux dans Spring MVC @PathVariable ?

Comment gérer les variables de chemin tronqué avec des caractères spéciaux dans Spring MVC @PathVariable ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 12:37:27664parcourir

How to Handle Truncated Path Variables with Special Characters in Spring MVC @PathVariable?

Adressage des variables de chemin tronqué dans Spring MVC avec @PathVariable

Problème :

Lors de l'utilisation Spring MVC avec @PathVariable pour le développement de l'API RESTful, il a été observé que les variables de chemin contenant des caractères spéciaux étaient tronquées. Plus précisément, lorsqu'une variable de chemin telle que "blah2010.08.19-02:25:47" est fournie, seule la partie jusqu'à la première période (c'est-à-dire "blah2010.08") est capturée par @PathVariable.

Cause :

Par défaut, Spring MVC traite les arguments @PathVariable comme de simples chaînes et s'attend à ce qu'ils suivent certaines règles de formatage des paramètres d'URL. Ces règles incluent des restrictions sur les caractères autorisés dans les variables de chemin, les caractères spéciaux tels que les points et les tirets étant interprétés comme des délimiteurs de valeur. Par conséquent, Spring tronque la variable path à la première instance d'un caractère invalide.

Solution :

Pour empêcher Spring de tronquer les valeurs @PathVariable, il est nécessaire de explicitement précisez que l'argument doit accepter une gamme plus large de caractères. Ceci peut être réalisé en utilisant une expression régulière dans l'annotation @RequestMapping.

Par exemple, pour permettre aux variables de chemin de contenir des points, des tirets et d'autres caractères spéciaux, l'expression régulière suivante peut être utilisée :

@RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName:.+}")

Le suffixe ". " dans l'expression régulière indique que la variable de chemin {blahName} doit correspondre à n'importe quelle chaîne non vide, capturant efficacement tous les caractères du chemin fourni.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn