继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spring 常用注解-@ModelAttribute视图数据渲染

艾贺521
关注TA
已关注
手记 292
粉丝 1.1万
获赞 1544

Spring 常用注解-@ModelAttribute视图数据渲染

@ModelAttribute也是Spring MVC中非常重要的注解之一,它主要绑定方法的参数或者方法的返回值为一个 命名属性 ,并且暴露给view使用。

下面我们就看两个小例子,它如何绑定方法参数与返回值给视图

案例

搭建环境

  1. 准备一个模型对象
public class User {
    private String id;
    private String name;
    private Integer age;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2 . 准备jsp页面,放在WEB-INF目录下的views目录,记得配置viewresolever

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
     </bean>

jsp页面

<%--
  Created by IntelliJ IDEA.
  User: aihe
  Date: 2018/11/15
  Time: 上午7:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<h2> msg:${msg}</h2>
<p>ID: ${user.id}</p>
<p>name: ${user.name}</p>
<p>age: ${user.age}</p>

</body>
</html>

3 .看下项目目录结构, 这次我们只用到ModelController,其它的控制器都没有用到。

作为方法参数

  1. 写好控制器,将@ModelAttribute标注在user入参的地方。
@Controller
@RequestMapping("/model")
public class ModelController {

    @RequestMapping("/parameter")
    public String parameter(
            @ModelAttribute("user") User user
    ) {

        return "index";
    }
}

  1. 测试访问,可以看到入参成功的被注入到了视图上面

作用在方法上

  1. 将控制器对象更改为如下
@Controller
@RequestMapping("/model")
public class ModelController {

    @ModelAttribute
    public User initUser(){
        User user = new User();
        user.setName("default");
        return user;
    }

    @RequestMapping("/parameter")
    public String parameter(
            @ModelAttribute("user") User user
    ) {

        return "index";
    }
}

2 . 再次进行测试,虽然我们没有传入name参数,但是还要有name的值存在。

Note: 因为Spring在处理请求的时候,发现控制器内有方法上标注@ModelAttribute的方法,会优先执行这个方法。然后如果方法有返回值,会将方法的返回值添加到模型中。

最后

这次一起看了@ModelAttribute注解。学习了它的用法。

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP