SpringMVC-ModelAttribute註解

爲何要使用ModelAttribute註解

ModelAttribute註解要應對的主要問題是:當你想要更新某個實體類在數據庫裏的數據時,有一些數據是不想要更改的,好比你並不想修改ID,可是SpringMVC自動封裝POJO類時,沒有帶值的會封裝成NULL,所以Dao的SQL語句更新數據時,你數據庫裏的ID也變成null了
HTML5java

<form action="${address}/update" method="POST"> 
編碼:
<input type="hidden" name="id" value="1">
用戶名:
<input type="text" name="username">
密碼:
<input type="password" name="password">
<input type="submit" value="提交">
</form>

java代碼數據庫

@RequestMapping("/update")
public int update(User user)
{
 int result=UserDao.update(user);
//該user的ID是空的,會致使數據庫裏的id也是空的
 System.out.println(user);
 System.out.println(result);
 if(result==1){
 return "success";
 }else{
 return "error";
 }
}
結果:null,小王,123456

使用方法

1.在方法上註解ModelAttribute,則Spring MVC在調用處理器時會先查看是否有ModelAttribute註解,先執行ModelAttribute註解下的代碼。
2.在方法入參上使用ModelAttribute,會從隱含對象中獲取存儲在內的數據。app

//參數中的ModelAttribute告訴該方法,不須要再建立一個user對象了,這裏的user是數據庫和頁面數據的整合版
@RequestMapping("/update")
    public String update(
Map<String, Object> model,HttpServletRequest request,
@ModelAttribute("user")User user){
        System.out.println("用戶信息:"+user);
        return "success";
    }
結果:
1,小王,123456
//提早往隱含對象中存儲數據
@ModelAttribute
public void ModelAttributeTest(@RequestParam(value="id") Integer id,Map<String, Object> map,){
        User user =UserDao.getuser(id);
       System._out_.println("數據庫裏的user:"+user);
        map.put("user", user);
    }

}
相關文章
相關標籤/搜索