English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
问题描述:当我们使用表单传值得时候,如果定义了name,address,age等属性,那么通过表单传过去的值就只有这些属性,但是我们需要的name,pass,address,age等四个属性。那么在提交表单并赋值的时候就会出现,未得到的值为null的情况。如下图:3个属性,但是我们需要的name,pass,address,age等四个属性。那么在提交表单并赋值的时候就会出现,未得到的值为null的情况。如下图:
获取的pass为null
那么我们需要用@ModelAttribute注解来解决它:
实现代码如下:
@ModelAttribute public void getUsers(@RequestParam(value="name",required=false) String name,Map<String, Object> map){ if(name!=null){ System.out.println("调用ModelAttribute"); //模拟从数据库中获取的对象。 User users = new User("cjh","123","[email protected]","China"); System.out.println("从数据库中获取一个对象"+users); map.put("user", users); } } @RequestMapping("/getInfo") public String getServletAPI(User user){ String viewName = "hello"; System.out.println("Modification : ")+user); return viewName; }
La méthode annotée par @ModelAttribute, dans ce contrôleur, exécutera toujours, peu importe laquelle des autres méthodes est appelée.
Le flux de travail du code suivant est :
1.Tout d'abord, exécutez la méthode modifiée par l'annotation @ModelAttribute, trouvez l'objet à modifier dans la base de données, mettez les valeurs dans les paires de clé-valeur de la Map, la clé doit correspondre au nom du paramètre de la méthode qui traite la requête, par exemple : ici, le nom du paramètre d'entrée est défini comme user, alors map.put(“user”, valeur (objet recherché dans la base de données)). Ce Map doit être défini à l'endroit où la méthode d'entrée est définie (comme dans le code ci-dessus).
2.Spring MVC recherche l'objet user dans la Map, affecte les paramètres de la requête de formulaire à l'objet user, et ne remplace que les propriétés définies dans le formulaire, les autres restent null, sans modification. Par conséquent, le nom des clés définies dans la méthode modifiée par @ModelAttribute doit correspondre au nom des paramètres de la méthode du contrôleur (@RequestMapping() modifié). Sinon, cela ne fonctionnera pas.
3.Spring MVC transmet cet objet aux paramètres de la méthode cible.
Attention : dans les méthodes modifiées par @ModelAttribute, le nom de la clé doit correspondre au nom du paramètre du type de la méthode cible.
Effet final :
Voici la totalité du contenu de cet article. J'espère que le contenu de cet article peut apporter un certain aide à votre apprentissage ou à votre travail, et j'espère également que vous pouvez soutenir le tutoriel d'alarme !
Déclaration : le contenu de cet article est issu du réseau, propriété de ses auteurs respectifs, contribué et téléversé par les utilisateurs d'Internet de manière spontanée. Ce site n'est pas propriétaire des droits, n'a pas fait l'objet d'une rédaction humaine et n'assume aucune responsabilité juridique. Si vous trouvez du contenu suspect de violation de droits d'auteur, n'hésitez pas à envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)