Quelle est la signification de {id:.+} dans un Spring MVC requestmapping méthode de gestionnaire?
Je suis tombé sur une méthode du contrôleur. Qu'est-ce que ce code d'identification:.+ ??
@RequestMapping(value="/index/{endpoint}/{type}/{id:.+}", method=RequestMethod.POST, consumes=kContentType, produces=kProducesType)
@ResponseBody
public String indexData(@PathVariable(value="endpoint") String endpoint, @PathVariable(value="type") String type, @PathVariable(value="id") String id, @RequestBody String body, HttpServletRequest request) {
logger.debug("In web controller for endpoint " + endpoint);
return indexController.indexData(endpoint, type, id, body, getSecurityContextProvider(request));
}
Vous devez vous connecter pour publier un commentaire.
La syntaxe d'une variable de chemin d'accès dans un contrôleur spring MVC requestmapping est
{variable_name:regular_expression}
. Vous pouvez omettre l'expression régulière, ce qui conduit à ce que vous voyez plus souvent,{id}
.Donc pour l'exemple
/index/{endpoint}/{type}/{id:.+}
le nom de la variable estid
et de l'expression régulière est.+
(voir ci-dessous la référence de printemps docs).L'expression régulière
.+
est en indiquant "le match le métacaractère.
une ou plusieurs fois". Le". " métacaractère représente n'importe quel caractère, y compris le blanc de l'espace (bien que certaines implémentations ne correspondront pas à des retours à la ligne). Voir http://en.wikipedia.org/wiki/Regular_expressionL'expression régulière est utilisée pour aider les Printemps de déterminer la valeur de la variable car vous pouvez avoir des noms de variables ou il y a peut être d'autres informations importantes à la fin du chemin d'accès qui seraient autrement aspiré dans la valeur de la variable si le Printemps a juste dit "aller jusqu'au bout de la route" (eg. extensions de nom de fichier ou de chemin de variables).
Il est possible que, dans votre exemple, l'id de la variable peut contenir des caractères spéciaux qui seraient autrement cause du Printemps pour mettre fin à la variable prématurément. J'ai rencontré ce problème avant lorsque vous essayez d'utiliser un nom de fichier qui contient extension du fichier (foobar.jpg). Le printemps ne revenir que la partie "foobar" de la variable parce que le Printemps est à supposer que je voulais mettre fin à la valeur de la variable lors de la période de délimiteur. Donc, dans ce cas, assurez-vous que les "id" correspond à la valeur totale, à vous de mettre la regex qui dit Printemps pour aller de l'avant et de correspondre avec tout le entre la dernière barre oblique et la fin du chemin d'accès. DONC, Référence: Spring MVC @PathVariable obtention tronqués
Voici l'extrait du Printemps docs qui traite de la variable complexe correspondant:
Voici leur (assez complexe) exemple:
Source: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html
L'exemple qu'ils fournissent montre comment effectuer des mappings de demandes de contrôleur de la méthode paramétrée que vous n'auriez pas pu faire sans l'aide d'une expression régulière.