Avec le Printemps, puis-je faire une option variable de chemin d'accès?
Avec Spring 3.0, puis-je disposer en option d'une variable de chemin d'accès?
Par exemple
@RequestMapping(value = "/json/{type}", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@PathVariable String type,
@RequestParam("track") String track) {
return new TestBean();
}
Ici, je voudrais /json/abc
ou /json
appel à la même méthode.
Une solution évidente déclarer type
comme un paramètre de la requête:
@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@RequestParam(value = "type", required = false) String type,
@RequestParam("track") String track) {
return new TestBean();
}
et puis /json?type=abc&track=aa
ou /json?track=rr
travaillera
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas avoir en option des variables de chemin, mais vous pouvez avoir deux méthodes de contrôleur qui garde le même code de service:
@RequestMapping
avec deux valeurs comme: stackoverflow.com/questions/17821731/...Si vous utilisez Printemps 4.1 et Java 8, vous pouvez utiliser
java.util.Optional
qui est pris en charge dans@RequestParam
,@PathVariable
,@RequestHeader
et@MatrixVariable
dans Spring MVC -"/json/{type}"
et le type n'est pas présent, il ne sera pas hit (comme mon liés répondre à l'indique), mais ici vous avezvalue = {"/json/{type}", "/json" }
. Donc si quelqu'un correspond à la méthode du contrôleur seront frappés.@PathVariable(required = false)
et d'obtenir la valeur null si la variable n'est pas présente.Ce n'est pas bien connu que vous pouvez également injecter une Carte des variables de chemin d'accès en utilisant le @PathVariable annotation. Je ne sais pas si cette fonctionnalité est disponible au Printemps 3.0 ou s'il a été ajouté plus tard, mais voici une autre façon de résoudre le exemple:
Vous pouvez utiliser un :
pour facultatif params plutôt qu'un pathVariable
Printemps 5 /Spring Boot 2 exemples:
blocage
réactif
Cochez cette Le Printemps 3 WebMVC - Facultatif Variables De Chemin D'Accès. Il montre un article de faire une extension à AntPathMatcher pour activer l'option variables de chemin d'accès et peut être de l'aide. Tous les crédits à Sebastian Herold pour la publication de l'article.
Exemple simplifié de Nicolai Ehmann commentaire et wildloop réponse (Printemps 4.3.3+), vous pouvez utiliser
required = false
maintenant: