Peut @PathVariable retourner la valeur null si il ne l'est pas?
Est-il possible de faire la @PathVariable
à retourner la valeur null si la variable de chemin d'accès n'est pas dans l'url? Sinon j'ai besoin de faire deux gestionnaires. Un pour /simple
et un autre pour /simple/{game}
, mais les deux la même juste si il n'y a pas de jeu défini-je choisir en premier de la liste, cependant si il y a un jeu de param défini puis-je l'utiliser.
@RequestMapping(value = {"/simple", "/simple/{game}"}, method = RequestMethod.GET)
public ModelAndView gameHandler(@PathVariable("example") String example,
HttpServletRequest request) {
Et c'est ce que j'obtiens lorsque j'essaie d'ouvrir la page /simple
:
Causés par: java.lang.IllegalStateException: impossible de trouver le @PathVariable [exemple] dans @RequestMapping
Vous devez vous connecter pour publier un commentaire.
Ils ne peuvent pas être facultatif, non. Si vous avez besoin, vous avez besoin de deux méthodes pour les gérer.
Cela reflète la nature des variables de chemin d'accès - cela ne fait pas vraiment de sens pour eux d'être nulle. RESTE-Url du style toujours besoin de l'URL complète chemin. Si vous avez un composant en option, envisager de faire un paramètre de la requête à la place (c'est à dire à l'aide de
@RequestParam
). C'est beaucoup mieux adapté à des arguments optionnels.@PathVariable(value = "siteId", required = false) String siteId
bien que je n'ai pas trouvé un moyen de ne pas fournir une variable de chemin d'accès ou la laisser vide ou vide.required
paramètrefalse
, il sera toujours nécessaire de fournir le chemin d'accès d'un paramètre ou d', une exception sera levée.Comme d'autres l'ont déjà mentionné, Non, vous ne peut pas s'attendre à être nulle lorsque vous avez mentionné explicitement le chemin de paramètres. Cependant, vous pouvez faire quelque chose comme ci-dessous comme une solution de contournement -
Si vous utilisez Printemps 4.1 et Java 8, vous pouvez utiliser java.util.Facultatif qui est pris en charge dans
@RequestParam
,@PathVariable
,@RequestHeader
et@MatrixVariable
dans Spring MVCVous pouvez toujours juste ce faire:
Essayer cette approche, il a travaillé pour moi.