学习SpringMVC(八)之ModelAttribute
2016-05-17 18:08
399 查看
首先,介绍下ModelAttribute的作用:
1.用@ModelAttribute修饰的方法,将再目标方法被调用前进行调用
2.可以解决这样一个问题:用户在提交表单时候,要求可以对用户名进行修改,但是密码不允许修改,这样在提交之后,在目标方法中的入参对象,将自动对用户名进行填充修改,但是这时候发现密码变为NULL,因为没有对密码传值,但是要求密码为原来用户的密码不变。
2.1 可以通过查询数据库的信息,再密码传递过来
2.2 也可以使用@ModelAttribute来解决这个问题
3.下面来看个案例
在index.jsp中:
在controller中:
注意:map.put("user", user); 中的键user,应该为testModelAttribute(User user1)中的User的首字母小写
4.该案例的运行流程:
4.1 执行@ModelAttribute修饰的方法,把user,放到map当中
4.2 SpringMVC从map中取出User对象,然后把表单的请求参数附给User对象的属性值
4.3 SpringMVC将上述的对象传入目标方法当中
1.用@ModelAttribute修饰的方法,将再目标方法被调用前进行调用
2.可以解决这样一个问题:用户在提交表单时候,要求可以对用户名进行修改,但是密码不允许修改,这样在提交之后,在目标方法中的入参对象,将自动对用户名进行填充修改,但是这时候发现密码变为NULL,因为没有对密码传值,但是要求密码为原来用户的密码不变。
2.1 可以通过查询数据库的信息,再密码传递过来
2.2 也可以使用@ModelAttribute来解决这个问题
3.下面来看个案例
在index.jsp中:
<span style="font-family:SimSun;font-size:18px;"><form action="springmvc/testModelAttribute" method="post"> <input type="hidden" name="id" value="1"> username:<input type="text" name="name" value="CGF"> <input type="submit" value="提交"> </form></span>
在controller中:
<span style="font-family:SimSun;font-size:18px;">import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.cgf.springmvc.entities.User; import com.sun.org.glassfish.gmbal.ParameterNames; @RequestMapping(value="/springmvc") @Controller public class MyModelAttribute { public final String viewname="success"; @ModelAttribute public void updateUser(@RequestParam(value="id",required=false)Integer id, Map<String,Object> map){ if(id!=null){ User user=new User(1,"cgf2016", "123456"); //模拟从数据库中获取数据 System.out.println("模拟从数据库中获取数据:"+user); map.put("user", user); } } @RequestMapping(value="/testModelAttribute") public String testModelAttribute(User user1){ System.out.println("testModelAttribute修改后:"+user1); return viewname; } }</span>这样就可以解决上述的问题
注意:map.put("user", user); 中的键user,应该为testModelAttribute(User user1)中的User的首字母小写
4.该案例的运行流程:
4.1 执行@ModelAttribute修饰的方法,把user,放到map当中
4.2 SpringMVC从map中取出User对象,然后把表单的请求参数附给User对象的属性值
4.3 SpringMVC将上述的对象传入目标方法当中
相关文章推荐
- Java中equals和==的区别
- Eclipse 与 Android Studio 差异
- RDD与DataFrame动态转换(Java)
- Java 调用 hbase 启动卡死状态
- spring集合类型注入
- JDK安装后 没有tools.jar 和dt.jar包的解决办法
- Java数组
- RDD和DataFrame转换(Java+Scala)
- SpringMVC之使用Validator接口进行验证
- kafka+java 伪分布式安装和配置
- Spring 事务注解 错误问题
- 解决Eclipse建Maven项目module无法转换为2.3
- 使用Java和Scala在IDE中开发DataFrame实战
- [置顶] java虚拟机学习之旅
- SpringSide简
- 2、使用Struts2实现登录功能(没有连接数据)
- 基于Spring的可扩展Schema进行开发自定义配置标签支持
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- Spring3整合Quartz2实现定时任务及动态任务调整(添加删除暂停恢复)--推荐
- java 中锁实现