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最大的作用就是这样。
 
  



你可能感兴趣的:(Springmvc中 @ModelAttribute的用法)