SpringMVC----ModelAttribute註解使用
阿新 • • 發佈:2018-10-03
修飾 數據庫 pre ger ESS name -m 字母 app
1.需求:
index.jsp <!-- 模擬修改操作 1.原始數據:1,Tom,123456,[email protected],25,BJ 2.要求密碼不能被修改 3.表單回顯,模擬操作直接在表單填寫對應的屬性值 --> <form action="springmvc/testModelAttribute" method="POST"> <input type="hidden" name="id" value="1"/> username:<input type="text" name="username" value="Tom" /> <br> email:<input type="text" name="email" value="[email protected]"/> <br> age:<input type="text" name="age" value="25"/> <br> <input type="submit" value="submit" /> </form> 測試代碼: @RequestMapping("/springmvc") @Controller public class SpringMVCTest {private static final String SUCCESS = "success"; @RequestMapping("/testModelAttribute") public String testModelAttribute(User user){ System.out.println("修改:"+user); return SUCCESS; } } 結果: 修改:User [id=1, username=Tom, password=null, [email protected], age=11111]
2.解決需求:
測試代碼: @RequestMapping("/springmvc") @Controller public class SpringMVCTest { private static final String SUCCESS = "success"; @ModelAttribute public void getUser(@RequestParam(value="id",required=false) Integer id, Map<String,Object> map){ if(id!=null){ //模擬從數據庫中獲取對象,把對象放進map裏面 User user = new User(1, "Tom", "123456", "[email protected]", 25); System.out.println("從數據庫中獲取一個對象"+user); map.put("user", user); } } @RequestMapping("/testModelAttribute") public String testModelAttribute(User user){ System.out.println("修改:"+user); return SUCCESS; } } 結果: 從數據庫中獲取一個對象User [id=1, username=Tom, password=123456, [email protected], age=25] 修改:User [id=1, username=Tom, password=123456, [email protected], age=22222]
3.總結運行流程:
1. @ModelAttribute註釋修飾的方法:從數據庫中取出對象,把對象放入到了map中,鍵為user;
2. SpringMVC從map中取出user對象,並把表單的請求參數賦給該User對象的對應屬性;
3. SpringMVC把上述對象傳入目標方法的參數;
4.註意:
1. 在@ModelAttribute修飾的方法中,放入到map時的鍵需要和目標方法入參類型的第一個字母小寫的字符串一致;
2.
SpringMVC----ModelAttribute註解使用