Springmvc中 @ModelAttribute的用法
阿新 • • 發佈:2019-01-05
至於 @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"如果是下面這張方式的話,那我們一進行表單提交 它只會得到我們的密碼 從而得不到我們的使用者名稱,這個時候,@ModelAttribute就可以開始它的作用了,method="post"> 密碼: <input type="text" name="upwd" value="${person.upwd}"> <br/> <input type="submit" value="修改"> <br/> </form>
我們先去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最大的作用就是這樣。