码迷,mamicode.com
首页 > 编程语言 > 详细

springMVC学习-day04

时间:2018-04-12 20:50:56      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:springMVC

@ModelAttribute注解
  1. 需求:假设有一个user对象,通过表单提交后,修改时不能修改密码可以修改值,达到部分数据修改的目的
  2. 代码清单
    前台页面

    <!--
        模拟修改操作: 
            1. 原始数据为: 1, Tom, 123, tom@zgz.com, 11
            2. 密码不能被修改
            3. 表单回显, 模拟操作直接在表单填写对应的属性值 
     -->
    
    <form action="springmvc/testModelAttribute" method="post">
        <input type="hidden" name="id" value="1">
        username: <input type="text" name="username" value="Tom">
        <br />
        email: <input type="email" name="email" value="tom@zgz.com">
        <br />
        age: <input type="text" name="age" value="11">
        <br />
        <input type="submit" value="Submit">
    </form>
    <br /><br />

    控制器

    /**
     /**
     * 1. 有 @ModelAttribute 注解标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用
     * 2. @ModelAttribute 注解也可以用来修饰目标方法 POJO 类型的入参, 其 value 属性值有如下作用:
     *  1). SpringMVC 会使用 value 属性值在 implicitModel 中查找对应的对象, 若存在则会直接传入到目标方法的入参中.
     *  2). SpringMVC 会以 value 为 key, POJO 类型的对象为 value, 存入到 request 中.
     * @param id
     * @param map
     */
     * @param id
     * @param map
     */
    @ModelAttribute
    public void getUser(@RequestParam(value="id",required=false) Integer id,
            Map<String, Object> map){
        if(id != null){
            //模拟从数据库中取出对象
            User user = new User(1, "Tom", "123", "tom@zgz.com", 11);
            System.out.println("从数据库中获取一个对象: " + user);
    
            map.put("user", user);
        }
    }
    
    /**
     * 运行流程:
     *  1. 执行@ModelAttribute 注解修饰的方法: 从数据库中取出对象, 把对象放到了Map中, 键为: user
     *  2. SpringMVC 从 Map 中取出user对象, 并把表单的请求赋给该 User对象的对应属性
     *  3. SpringMVC 把上述对象传入目标方法的参数
     *  
     * 注意:
     *  在@ModelAttribute 修饰的方法中, 放入到 Map 时的键需要和目标方法入参类型的第一个字母小写的字符串一致!
     * @param user
     * @return
     */
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(User user) {
        System.out.println("修改: " + user);
        return SUCCESS;
    }

springMVC学习-day04

标签:springMVC

原文地址:http://blog.51cto.com/13416247/2097576

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!