总觉得在表单写 name="id"和name="name"不安全……最好加前缀吧- -
言归正传,@ModelAttribute感觉是一个很神奇的注解,初步了解是用于更新
被更新的数据由于要创建新的对象,如果数据里某条不能被修改,但是submit后不填写该条数据提交后就是null
而这个注解可以很好解决这个问题,要修改的值就修改,不改就用原来的,大概是这个意思。
原理:被此注解标记的方法会在目标方法执行前调用,
在被修饰的方法中,放入map的的键名需要和目标方法入参类名改为第一个小写字母后一致
<form action="ModelAttr/testModelAttr" method="post"> <input type="hidden" value="3", name="uid"> 姓名srting:<input type="text" name="username" value="yiki"><br> 年龄int:<input type="text"name="age" value="299"><br> <br> <input type="submit" value="submit"> </form>
package com.yiki.Handle; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.yiki.pojo.User; @RequestMapping("/ModelAttr") @Controller public class ModelAttributeTest { private static final String SUCCESS = "success"; @ModelAttribute public void getUser(@RequestParam(value = "uid", required = false) Integer uid, Map<String, Object> map) { if (uid != null) { User user = new User(1, "yiki", 12345, 9); System.out.println("数据库" + user); map.put("user", user); } } @RequestMapping("/testModelAttr") public String testModelAttribute(//@ModelAttribute=(value="test")也可以使得Spring找到user==》map.put("test",user) User user) { System.out.println("修改" + user); return SUCCESS; } }