Maison > développement back-end > tutoriel php > Comment SpringMVC résout le problème de la liaison des paramètres avec le même nom

Comment SpringMVC résout le problème de la liaison des paramètres avec le même nom

零到壹度
Libérer: 2023-03-23 08:58:02
original
1304 Les gens l'ont consulté

Cet article présente principalement comment SpringMVC résout le problème de liaison des paramètres avec le même nom. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un œil.

Par exemple, mon formulaire est comme ceci :

<span style="font-size: 16px;"><form action="/test.action" method="post">  <br>    <input name="user.name">  <br>    <input name="acc.name">  <br>    <input type="submit">  <br></form> <br></span>
Copier après la connexion

Si c'est du stuts, C'est facile à résoudre. Déclarez simplement les objets user et acc dans le contrôleur. Cependant, la liaison des paramètres de SpringMVC est différente de celle de struts. Si votre action est comme ceci :

<.>
<span style="font-size: 16px;">@RequestMapping("/test.action")<br>public void test(Account account, User user){<br>    System.out.println(user);<br>    System.out.println(account);<br>} <br></span>
Copier après la connexion

Si cela se produit, une erreur sera signalée. Que dois-je faire ?

L'annotation @InitBinder est utilisée ici Pour une explication détaillée, vous pouvez trouver des informations pertinentes Ici, je parle uniquement de la façon de l'utiliser. Ajoutez les deux méthodes suivantes à la classe Controller, qui sont utilisées pour attribuer la valeur de l'identifiant de départ spécifié à l'objet avec le nom spécifié

<span style="font-size: 16px;">@InitBinder("account")  <br>public void initAccountBinder(WebDataBinder binder) {  <br>    binder.setFieldDefaultPrefix("acc.");  <br>} <br><br>@InitBinder("user")  <br>public void initUserBinder(WebDataBinder binder) {  <br>    binder.setFieldDefaultPrefix("user.");  <br>}<br></span>
Copier après la connexion

, puis modifiez la méthode d'action à ce qui suit : C'est tout.

<span style="font-size: 16px;">@RequestMapping("/test.action")<br>public void test(@ModelAttribute("account") Account account, @ModelAttribute("user") User user){<br>    System.out.println(user);<br>    System.out.println(account);<br>}<br></span>
Copier après la connexion

Notez que les paramètres dans @ModelAttribute doivent correspondre aux valeurs dans @InitBinder définies ci-dessus, sinon la valeur ne sera pas obtenue.

Recommandations associées :

Résolution de nom en double du paramètre de liaison d'objet SpringMvc

Liaison des paramètres Spring MVC de différents objets portant le même nom

Une raison de la liaison des paramètres springmvc pojo "infructueuse"

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal