1.@ModelAttrbute===>数据回显()
所谓的数据回显就是使用@ModelAttribute注解-类似于过滤器,访问在该类中所有处理器时先提前来访问被@ModelAttribute注解的方法,这样会在model域里面放进去一个从数据库里查出来的对象,等走到你要访问的方法的时候,会在model域里面先找有没有这样的对象,有的话直接就可以取到这个对象,这就是数据的回显。
数据回显的一种重要作用就是使用mvc提供的form表单的填充(可以取model里的值去回填form表单):可参考springmvc-2的update.jsp
代码:
@RestController//=controller+responsebody
//就是该controller下面所有的hander都是前后端分离的接口,返回的数据类型都是和json有关了
@RequestMapping("/user")
public class UserController {
@RequestMapping("/toUpadateShow")
public String toUpadateShow(User user){
System.out.println(user.toString());
//model.addAttribute("user",user);
return "update";
}
@ModelAttribute //就是访问在该类中所有处理器时,
//先提前来访问被@ModelAttribute注解的方法,效果类似于过滤器
public void testModelAttrbute(int id, Model model){
System.out.println(id+"+++++++++++++++++++++++++++");
//假设去数据库查询,查到了一个user
User u=new User();
u.setId(id);
u.setName("张三");
u.setBirthday(new Date());
model.addAttribute("user",u);
}
mvc的form表单:
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="mvc"%>
<html>
<head>
<title>Title</title>
</head>
<script src="${pageContext.request.contextPath}/js/jquery-1.4.2.js"></script>
<body>
这是修改之后的展示界面
<!--
modelAttribute:是为了提取controller中加了ModelAttrbute注解的处理器所注入的对象
path:1.是为了取域中属性值
2.后期springmvc在编译jsp时,生成id和name属性的值
-->
<mvc:form action="#" method="post" modelAttribute="user">
id: <mvc:input path="id" ></mvc:input>
姓名:<mvc:input path="name"></mvc:input>
地址:<mvc:input path="address"></mvc:input>
生日:<mvc:input path="birthday"></mvc:input>
<mvc:button value="提交">提交</mvc:button>
</mvc:form>
</body>
</html>