@ModelAttribute 三种用法
1、对handler中的方法进行注解:
@ModelAttribute 注解的方法,本质来说:会在其他方法执行前,会首先被调用。用于初始化一些参数。然后其他方法执行时,会先查找这些参数是否已经存在,若不存则创建一个。
2、对handler内的方法的形参进行注解:
html表单提交的,可以在控制器内生产一个pojo对象。默认情况下:会将该pojo对象的类型的首字母小写作为关键字,将pojo对象值 作为参数。放置到request属性中。如果pojo对象前面有@ModelAttribute(value =”XXX”),则request存储的pojo对象关键字为XXX,不再是该对象的类型的首字母小写。
3、在jsp中的使用springmvc 的表单标签 问题:
参数页面:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <body> <!-- 1. WHY 使用 form 标签呢 ? 可以更快速的开发出表单页面, 而且可以更方便的进行表单值的回显 2. 注意: 可以通过 modelAttribute 属性指定绑定的模型属性, 若没有指定该属性,则默认从 request 域对象中读取 command 的表单 bean 如果该属性值也不存在,则会发生错误。 --> <form:form action="emp" method="post" modelAttribute="employee"> <!-- path标签对应 html表单标签的 name属性值 --> LastName:<form:input path="lastName" /> <input type="submit" value="submit" /> </form:form> <!-- form:form 标签在springmvc会有回显值,一开始加载页面时,就需要填充表单, 所以 modelAttribute="employee" 用来标记从 request中的 取出 employee 关键字的 属性值 --> </body>
编辑处理器:
@RequestMapping(value="/emp", method=RequestMethod.GET) public String input(Map<String, Object> map){ //主要是每次 访问表单时,springmvc 都会 回显 之前的表单值,因为第一次 没有创建,所以需要默认新建一个 map.put("employee", new Employee()); return "input"; }