SpringMVC 9. ModelAttribute注解

@ModelAttribute

1 ModelAttribute的应用场景

为了实现更改数据库中的一部分数据,并且敏感的数据并不会在页面传回服务器.

  • 在未使用ModelAttribute注解前
    1
  • 使用ModelAttribute注解能实现
    2

2 ModelAttribute的示例

在方法定义上使用 @ModelAttribute 注解:Spring MVC在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法。
在方法的入参前使用 @ModelAttribute 注解:

  • 可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数绑定到对象中,再传入入参
  • 将方法入参对象添加到模型中

controller类方法:

/**
     * 1. 有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用! 
     * 2. @ModelAttribute 注解也可以来修饰目标方法 POJO 类型的入参, 其 value 属性值有如下的作用:
     * 1). SpringMVC 会使用 value 属性值在 implicitModel 中查找对应的对象, 若存在则会直接传入到目标方法的入参中.
     * 2). SpringMVC 会一 value 为 key, POJO 类型的对象为 value, 存入到 request 中. 
     */
    @ModelAttribute
    public void getUser(@RequestParam("id") Integer id ,Map<String,Object> map){
        System.out.println("ModelAttribute Method");

        if (id != null){
            User user =  new User(1,"hgx","123456",12,"[email protected]") ;
            System.out.println("从数据库查到User:" + user);
            map.put("user",user) ;
        }
    }


    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(User user){

        System.out.println("修改:"+user);

        return SUCCESS ;
    }

jsp页面:

 <form action="/springmvc/testModelAttribute" method="post">
        <input type="hidden" value="1" name="id">
        <br>
        username:<input type="text" name="username">
        <br>
        age:<input type="text" name="age">
        <br>
        email:<input type="text" name="email">
        <br>

        <input type="submit" value="submit">

    </form>

猜你喜欢

转载自blog.csdn.net/hgx_suiyuesusu/article/details/79996346