1. 程式人生 > >SpringMVC----ModelAttribute註解使用

SpringMVC----ModelAttribute註解使用

修飾 數據庫 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註解使用