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("Modificación:")+user); return viewName; }
El método modificado por @ModelAttribute, en este controlador, se ejecutará independientemente de cualquier otro método que se llame.
El flujo de ejecución del código anterior es:
1.Primero se ejecuta el método modificado por @ModelAttribute, se encuentra el objeto correspondiente a modificar en la base de datos, se colocan los valores en el par de clave y valor del mapa, la clave debe coincidir con el nombre del parámetro introducido en el método que procesa la solicitud, por ejemplo: el nombre del parámetro introducido aquí es user, entonces map.put(“user”, valor (objeto encontrado en la base de datos)). Este Map debe definirse en el lugar del parámetro del método (como se muestra en el código).
2.Spring MVC buscará el objeto user en el Map y asignará los parámetros de solicitud del formulario al objeto user, solo se reemplazará las propiedades definidas en el formulario, las no definidas se establecerán como null, sin cambio. Por lo tanto, se requiere que el nombre de la clave definida en el método modificado por @ModelAttribute coincida con el nombre del parámetro de entrada del método del controlador (@RequestMapping() modificado por el método). De lo contrario, no tendrá efecto.
3.Spring MVC transmite el objeto mencionado anteriormente al parámetro del método objetivo.
Atención: en el método modificado por @ModelAttribute, la clave puesta en el mapa debe coincidir con el nombre del parámetro del tipo de entrada del método objetivo.
Efecto final:
Esto es todo el contenido de este artículo, esperamos que el contenido de este artículo pueda proporcionar cierta ayuda a su aprendizaje o trabajo, y también esperamos que apoyen más el tutorial de gritos!
Declaración: el contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente por humanos y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)