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("Modificação:")+user); return viewName; }
O método anotado com @ModelAttribute, neste controlador, executará independentemente de qualquer outro método ser chamado.
O fluxo de execução do código acima é:
1.Primeiro, execute o método anotado com @ModelAttribute, consulte o objeto correspondente a ser modificado no banco de dados, coloque o valor no par de chave-valor do map, o key deve ser o mesmo que o nome do parâmetro do método que trata a solicitação, por exemplo: neste exemplo, o nome do parâmetro de entrada definido é user, então map.put(“user”, valor (objeto consultado no banco de dados)). Este Map deve ser definido no local do parâmetro do método (como no código acima).
2.O Spring MVC encontrará o objeto user no Map, atribuirá os parâmetros da solicitação de formulário ao objeto user e apenas substituirá os atributos definidos no formulário. Os que não estão definidos permanecerão como null, sem alteração. Portanto, o nome da chave definida no método anotado com @ModelAttribute deve coincidir com o nome do parâmetro do método do controlador (@RequestMapping() modificado pelo método). Caso contrário, não terá efeito.
3.O Spring MVC passa o objeto acima para os parâmetros do método alvo.
Atenção: No método anotado com @ModelAttribute, o nome da chave deve coincidir com o nome do parâmetro do tipo do método alvo ao ser inserido no map.
Efeito final:
Isso é tudo o que há no artigo. Esperamos que o conteúdo deste artigo ajude você a aprender ou trabalhar. Também esperamos que você apoie o tutorial Grito!
Declaração: o conteúdo deste artigo é extraído da internet, pertence ao respectivo proprietário. O conteúdo é contribuído e carregado voluntariamente pelos usuários da internet. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade por eventuais responsabilidades legais. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar, e forneça provas relevantes. Apenas após a verificação, o site deletará o conteúdo suspeito de violação de direitos autorais.