@RequestParam vs @PathVariable
Quelle est la différence entre @RequestParam
et @PathVariable
lors de la manipulation des caractères spéciaux?
+
a été acceptée par @RequestParam
que l'espace.
Dans le cas de @PathVariable
, +
a été accepté comme +
.
Vous devez vous connecter pour publier un commentaire.
@PathVariable
est d'obtenir une partie de l'espace réservé à partir de l'URI (Printemps appeler un Modèle URI)— voir Printemps de Référence Chapitre 16.3.2.2 Modèle URI Modèles
@RequestParam
est d'obtenir un paramètre à partir de l'URI ainsi — voir Printemps de Référence Chapitre 16.3.3.3 demande de Liaison de paramètres pour les paramètres de la méthode avec @RequestParamSi l'URL
http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013
obtient les factures pour l'utilisateur 1234 le 5 décembre 2013, la méthode de contrôleur ressemblerait à:Aussi, les paramètres de la demande peut être facultatif, et, dès le Printemps 4.3.3 les variables de chemin d'accès peut être en option ainsi. Attention cependant: ce qui pourrait changer le chemin de l'URL de la hiérarchie et d'introduire la demande de la cartographie des conflits. Par exemple,
/user/invoices
fournir les factures pour l'utilisateurnull
ou les informations d'un utilisateur avec l'ID "factures"?@PathVariable
peut être utilisé dans toute RequestMethodnull
valeur pour@PathVariable
sera montré comme/user//invoices
et pas/user/invoices
. Je pense qu'ils vont être traités différemment. Peut-être/user{userId}/invoices
va avoir des problèmes, je ne sais pas.@PathParam
et@RequestParam
être déclarée sans l'aide de@RequestMapping
?@PathParam
ne fonctionne que si il y a un espace réservé dans le modèle uri)@PathVariable
, mais depuis que j'ai commencé avec@PathParam
vous renvoie le même. - Il Correct?@PathParam
mais@PathVariable
@PathParam
, mais en fait, je ne l'obtenez pas.@RequestParam
au lieu@QueryVariable
(ou@QueryParam
), il serait d'autant plus évident lorsque l'utiliser contre@PathVariable
.@RequestParam annotation est utilisée pour accéder aux valeurs des paramètres de requête à partir de la demande. Regardez les suivantes URL de la requête:
Dans l'URL ci-dessus demande, les valeurs pour param1 et param2 peut être consulté ci-dessous:
Voici la liste des paramètres pris en charge par l' @RequestParam annotation:
@PathVariable
@PathVariable identifie le motif qui est utilisé dans l'URI de la requête entrante. Voyons ci-dessous l'URL de la requête:
L'URL ci-dessus demande peut être écrit dans votre Spring MVC comme ci-dessous:
L' @PathVariable annotation n'a qu'une valeur d'attribut pour la liaison de l'URI de la demande de modèle. Il est permis d'utiliser les multiples @PathVariable annotation dans la seule méthode. Mais, s'assurer que pas plus d'une méthode a le même modèle.
Il y a aussi une plus intéressants annotation:
@MatrixVariable
Et la méthode de Contrôleur pour qu'il
Mais vous devez activer:
userName
ont un type de param ou pas? Je suis penchée vers la réalisation d'une variable, mais il pourrait être un param trop.@PathParam
et@RequestParam
être déclarée sans l'aide de@RequestMapping
@RequestParam est l'utilisation de paramètres de requête(valeurs statiques) comme: http://localhost:8080/calculation/pow?base=2&ext=4
@PathVariable est de les utiliser pour la dynamique des valeurs comme : http://localhost:8080/calculation/sqrt/8
il se peut que l'application/x-www-form-urlencoded midia type de convertir l'espace de +, et le récepteur décode les données en convertissant le + à l'espace.vérifiez l'url pour plus d'info.http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1