springmvc基础-@ModelAttribute注解详解

@ModelAttribute  三种用法

1、对handler中的方法进行注解:

@ModelAttribute 注解的方法,本质来说:会在其他方法执行前,会首先被调用。用于初始化一些参数。然后其他方法执行时,会先查找这些参数是否已经存在,若不存则创建一个。

参看:springmvc基础-控制器返回值总结

2、对handler内的方法的形参进行注解:

html表单提交的,可以在控制器内生产一个pojo对象。默认情况下:会将该pojo对象的类型的首字母小写作为关键字,将pojo对象值 作为参数。放置到request属性中。如果pojo对象前面有@ModelAttribute(value =”XXX”),则request存储的pojo对象关键字为XXX,不再是该对象的类型的首字母小写。

参看:springmvc基础-请求映射总结

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";
	}

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments