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

零到壹度
零到壹度original
2018-04-04 17:41:451309parcourir

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>

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>

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>

, 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>

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!

Déclaration:
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