1. 程式人生 > >Springmvc中 @ModelAttribute的用法

Springmvc中 @ModelAttribute的用法

至於 @ModelAttribute 適用場合在修改資料上,作用在方法上,

好,下面就上程式碼,看看@ModelAttribute它的用法,說一個簡單的實列:

1.比如,在我的一個介面上,我要修改資料:我會點選一個連線進入我的controller類,先找到這個物件:

<a href="/getPersonId.action">修改</a>
2.進入我的controller:
//弄一個全域性變數
private Person person;

@RequestMapping("getPersonId")
public String getPersonId(Map map){
    //傳遞過來的id,根據id查詢資料庫:
//這裡我就自己隨便new一個物件了: person=new Person("admin","1213"); System.out.println("資料庫查詢出來的值為:"+person); map.put("person",person); return "update"; }

3.然後 再去看看的update.jsp介面:
這是我的一個form表單,然後值就繫結到上面去,我們再進行一個簡單的修改
<form action="/update.action" method="post">
    使用者名稱:<input type="text" 
name="uname" value="${person.uname}"> <br/> 密碼: <input type="text" name="upwd" value="${person.upwd}"> <br/> <input type="submit" value="修改"> <br/> </form>

假如,我們只輸入密碼,也就是隻修改密碼,然後使用者名稱不用輸入,那麼把from表單中的使用者名稱那個input標籤刪去,就變成下面這樣:
<form action="/update.action" 
method="post"> 密碼: <input type="text" name="upwd" value="${person.upwd}"> <br/> <input type="submit" value="修改"> <br/> </form>
如果是下面這張方式的話,那我們一進行表單提交 它只會得到我們的密碼 從而得不到我們的使用者名稱,這個時候,@ModelAttribute就可以開始它的作用了,
我們先去conteoller類去看看:
因為我們的person是全域性變數,所以當修改進行提交的時候就會自動呼叫這個getPerson方法:所以,不管你表單提交只輸入一個密碼,它就會將你的Person實體類中的
密碼(upwd)進行更新,
@ModelAttribute
public void getPerson(Map map){
    System.out.println("重新賦值");
    map.put("person",person);
}
然後,再呼叫這個修改的方法:
@RequestMapping("update")
public String update(Person person){

    System.out.println("修改之後的:"+person);
    return "redirect:/good.jsp"; //我這裡用的是重定向,位址列發生改變
} 

然後就完成修改了,所以@ModelAttribute最大的作用就是這樣。