- 浏览: 241282 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
糯米烧麦:
按上文说明ws发布成功了,但浏览器输入url?wsdl报404 ...
使用JAX-WS的Provider和 Dispatch发布WebService的例子 -
gongmingwind:
我设定后就OK了
使用Servlet实现文件下载的时候,避免浏览器自动打开文件 -
fanhang116:
为什么设定了后还是自动打开呢.
使用Servlet实现文件下载的时候,避免浏览器自动打开文件
A、@ModelAttribute
Annotation that binds a method parameter or method return value to a named model attribute, exposed to a web view. Supported for RequestMapping annotated handler classes.
在被@RequestMapping注释的处理器类中,这个注释可以绑定一个方法参数或绑定一个方法的返回值到一个命名的模型属性,提供给一个视图。
Can be used to expose command objects to a web view, using specific attribute names, through annotating corresponding parameters of a RequestMapping annotated handler method).
可以用于把一个command对象提供给web视图,使用指定的属性名称,在被@RequestMapping注释的处理器方法中注释相关参数。
Can also be used to expose reference data to a web view through annotating accessor methods ina controller class which is based on RequestMapping annotated handler methods, with such accessor methods allowed to have any arguments that RequestMapping supports for handler methods, returning the model attribute value to expose.
可以用于提供数据给一个web视图,通过注释处理器方法,这个方法允许有任何参数,返回的模型属性值被提供。
A.1、@ ModelAttribute的属性
value
The name of the model attribute to bind to.
绑定的模型属性的名称。
The default model attribute name is inferred from the declared attribute type (i.e. the method parameter type or method return type), based on the non-qualified class name: e.g. "orderAddress" for class "mypackage.OrderAddress", or "orderAddressList" for "List<mypackage.OrderAddress>".
默认的模型属性名称自动判断声明的属性类型(如,方法参数类型或方法返回类型)。如这个值是orderAddress,就对于当前包. OrderAddress。
B、@ModelAttribute注释一个方法
An @ModelAttribute on a method indicates the purpose of that method is to add one or more model attributes. Such methods support the same argument types as @RequestMapping methods but cannot be mapped directly to requests. Instead @ModelAttribute methods in a controller are invoked before @RequestMapping methods, within the same controller.
被@ModelAttribute注释的方法表示这个方法的目的是增加一个或多个模型(model)属性。这个方法和被@RequestMapping注释的方法一样也支持@RequestParam参数,但是它不能直接被请求映射。实际上,控制器中的@ModelAttribute方法是在同一控制器中的@RequestMapping方法被调用之前调用的。
@ModelAttribute methods are used to populate the model with commonly needed attributes for example to fill a drop-down with states or with pet types, or to retrieve a command object like Account in order to use it to represent the data on an HTML form.
被@ModelAttribute注释的方法用于填充model属性,例如,为下拉菜单填充内容,或检索一个command对象(如,Account),用它来表示一个HTML表单中的数据。
A controller can have any number of @ModelAttribute methods. All such methods are invoked before @RequestMapping methods of the same controller.
一个控制器可以有任意数量的@ModelAttribute方法。所有这些方法都在@RequestMapping方法被调用之前调用。
Note the two styles of @ModelAttribute methods. In the first, the method adds an attribute implicitly by returning it. In the second, the method accepts a Model and adds any number of model attributes to it.
有两种类型的@ModelAttribute方法。一种是:加入只一个属性,用方法的返回类型隐含表示。另一种是:方法接受一个Model类型的参数,这个model可以加入任意多个model属性。
B.1、@ModelAttribute注释void返回值的方法
举例说明
@Controller
public class HelloWorldController {
@ModelAttribute
public void populateModel(@RequestParam String abc, Model model) {
model.addAttribute("attributeName", abc);
}
@RequestMapping(value = "/helloWorld")
public String helloWorld() {
return "helloWorld";
}
}
这个例子,在获得请求/helloWorld 后,populateModel方法在helloWorld方法之前先被调用,它把请求参数(/helloWorld?abc=text)加入到一个名为attributeName的model属性中,在它执行后helloWorld被调用,返回视图名helloWorld和model已由@ModelAttribute方法生产好了。
这个例子中model属性名称和model属性对象有model.addAttribute()实现,不过前提是要在方法中加入一个Model类型的参数。
B.2、@ModelAttribute注释返回具体类的方法
举例说明
@ModelAttribute
public Account addAccount(@RequestParam String number) {
return accountManager.findAccount(number);
}
这种情况,model属性的名称没有指定,它由返回类型隐含表示,如这个方法返回Account类型,那么这个model属性的名称是account。
这个例子中model属性名称有返回对象类型隐含表示,model属性对象就是方法的返回值。它无须要特定的参数。
B.3、@ModelAttribute(value="")注释返回具体类的方法
举例说明
@Controller
public class HelloWorldController {
@ModelAttribute("attributeName")
public String addAccount(@RequestParam String abc) {
return abc;
}
@RequestMapping(value = "/helloWorld")
public String helloWorld() {
return "helloWorld";
}
}
这个例子中使用@ModelAttribute注释的value属性,来指定model属性的名称。model属性对象就是方法的返回值。它无须要特定的参数。
B.4、@ModelAttribute和@RequestMapping同时注释一个方法
举例说明
@Controller
public class HelloWorldController {
@RequestMapping(value = "/helloWorld.do")
@ModelAttribute("attributeName")
public String helloWorld() {
return "hi";
}
}
这时这个方法的返回值并不是表示一个视图名称,而是model属性的值,视图名称由RequestToViewNameTranslator根据请求"/helloWorld.do"转换为helloWorld。Model属性名称有@ModelAttribute(value=””)指定。
C、@ModelAttribute注释一个方法的参数
An @ModelAttribute on a method argument indicates the argument should be retrieved from the model. If not present in the model, the argument should be instantiated first and then added to the model.Once present in the model, the argument's fields should be populated from all request parameters that have matching names. This is known as data binding in Spring MVC, a very useful mechanism that saves you from having to parse each form field individually.
@ModelAttribute注释方法的一个参数表示应从模型model中取得。若在model中未找到,那么这个参数将先被实例化后加入到model中。若在model中找到,则请求参数名称和model属性字段若相匹配就会自动填充。这个机制对于表单提交数据绑定到对象属性上很有效。
B.1、从model中获取
It may already be in the model due to an @ModelAttribute method in the same controller
参数的值从当前控制器的@ModelAttribute方法提供的model属性中获取。
举例说明
@Controller
public class HelloWorldController {
@ModelAttribute("user")
public User addAccount() {
return new User("jz","123");
}
@RequestMapping(value = "/helloWorld")
public String helloWorld(@ModelAttribute("user") User user) {
user.setUserName("jizhou");
return "helloWorld";
}
}
在这个例子里,@ModelAttribute("user") User user注释方法参数,参数user的值来源于addAccount()方法中的model属性。
B.2、从URI template变量中获取
B.3、从Form表单或URL参数中获取
举例说明
@Controller
public class HelloWorldController {
@RequestMapping(value = "/helloWorld")
public String helloWorld(@ModelAttribute User user) {
return "helloWorld";
}
}
注意这时候这个User类一定要有没有参数的构造函数。
发表评论
-
Spring MVC 学习笔记 十一 data binding
2013-04-01 16:04 925Servlet中的输入参数为都是string类型,而spri ... -
Spring IOC 常用注解
2013-02-01 14:23 1058注解实现Bean配置主要用来进行如依赖注入、生命周期回调方法 ... -
Spring3 MVC详解一
2013-02-01 10:47 1067DispatcherServlet 前置控制器 使 ... -
在 Spring Web MVC 环境下使用 DWR
2013-01-18 14:02 911DWR 简介 目前 Ajax 的开发框架有很多,使用这些 ... -
使用 Spring 2.5 注释驱动的 IoC 功能
2013-01-18 14:03 865概述 注释配置相对于 XML 配置具有很多的优势: ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2013-01-16 10:27 873概述 继 Spring 2.0 对 Spring ... -
Spring MVC过滤器-HttpPutFormContentFilter
2013-01-16 10:25 4817在Spring MVC过滤器-HiddenHttpMe ... -
Spring MVC过滤器-HiddenHttpMethodFilter
2013-01-16 10:25 999浏览器form表单只支持GET与POST请求,而DELET ... -
Spring MVC 学习笔记 十 使用jsr 303进行校验
2013-01-15 15:12 1295可访问url http://localhost:8080/ ... -
Spring MVC 学习笔记 九 json格式的输入和输出
2013-01-15 15:12 936Spring mvc处理json需要使用jackson的类 ... -
Spring MVC 学习笔记 七 controller中其他可用的annotation
2013-01-15 15:12 1039@InitBinder 在controller中注册一 ... -
Spring MVC 学习笔记 六 Handler Method的可用参数
2013-01-16 10:25 903使用@requesMapping标注的处理函数包括的可选参 ... -
Spring MVC 学习笔记 四 Viewresol和View
2013-01-14 10:03 848Spring MVC使用ViewResolver来根据cont ... -
Spring MVC 学习笔记 三 handlerMapping和handlerAdapter
2013-01-14 09:54 960HandlerMapping Spring mvc 使用Han ... -
ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别
2013-01-14 09:32 957spring通过在web.xml 中配 ...
相关推荐
@ModelAttribute注解运用详解 @ModelAttribute注解是Spring框架中的一种重要注解,用于将模型数据绑定到控制器的方法参数中。下面我们将详细介绍@ModelAttribute注解的使用方法和示例代码。 一、@ModelAttribute...
在`Hello2ModelController`中,`@ModelAttribute`注解的`populateModel`方法返回一个`User`对象。由于没有指定模型属性名,Spring会使用返回类型的名称作为默认的模型属性名,即`user`。在处理`/helloWorld2`请求时...
本文将深入探讨`@ModelAttribute`的两种主要用途,并结合示例展示如何巧妙地运用它来简化Controller层的代码。 1. **作为方法参数**: 当`@ModelAttribute`注解应用于方法参数时,Spring MVC会尝试从请求中找到...
SpringMVC 注解详解 SpringMVC 是一个基于Java的Web应用程序框架,使用了Model-View-Controller(MVC)模式来分离应用程序的逻辑。SpringMVC提供了许多注解来简化配置和开发过程。下面将详细介绍SpringMVC的注解。 ...
6. `@ModelAttribute`:常用于MVC中,用于绑定请求参数到模型对象,或从模型中提取数据填充表单。 7. `@Cacheable`和`@CacheEvict`:用于缓存控制,`@Cacheable`用于标记应缓存的方法结果,`@CacheEvict`用于清除...
**SpringMVC注解配置详解** 在现代Java Web开发中,SpringMVC作为一个强大的轻量级框架,极大地简化了Web应用程序的构建。其中,注解配置是SpringMVC的一个核心特性,它允许开发者通过在类和方法上添加注解来替代...
SpringMVC基于注解的Controller详解旨在介绍如何利用注解简化Spring MVC的配置,提高开发效率。自Spring 2.5版本开始,Spring MVC引入了注解驱动的功能,使得开发者无需编写大量的XML配置,就能轻松地创建和管理...
4. `@Service`:用于标记服务层Bean,它继承自`@Component`,通常用于业务逻辑处理。 5. `@Repository`:用于标记数据访问层Bean,主要用于数据库操作。它可以透明地处理异常,并与Spring的事务管理结合。 6. `@...
《跟开涛学SpringMVC(4.3)Controller接口控制器详解》是针对Java开发者的一份深入学习资料,主要探讨了SpringMVC框架中的Controller组件。SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求和响应。...
4. **使用@ModelAttribute注解** 对于POST请求,`@ModelAttribute`注解可以用来将请求的FORM表单数据绑定到一个对象上,该对象通常是Bean: ```java @RequestMapping(value = "/addUser5", method = Request...
### SpringMVC详解及注解说明 #### 一、引言 随着软件开发技术的不断发展,基于注解(Annotation)的配置方式越来越受到开发者们的青睐。Spring框架自2.5版本开始,便提供了完全基于注解配置Bean的能力,极大地简化...
1. `@Controller`:这是定义一个类作为Spring MVC控制器的基本注解。当Spring容器扫描到这个注解时,它会将此类实例化,并处理其方法以响应HTTP请求。 2. `@RequestMapping`:用于映射HTTP请求到控制器方法。它可以...
【SpringMvc注解详解】 SpringMvc 是 Spring 框架的一部分,主要负责处理 Web 请求。在 SpringMVC 中,注解扮演着至关重要的角色,它们简化了代码并减少了配置。以下是一些常用的 SpringMVC 注解及其详细解释: 1....
除了这些基本的注解,还可以结合使用`@ModelAttribute`、`@SessionAttributes`等注解来处理更复杂的场景,如模型绑定和会话数据管理。 总的来说,Java Spring MVC的Controller机制提供了强大的功能来处理HTTP请求,...
此外,还可以使用@ModelAttribute、@RequestParam、@PathVariable等注解来处理请求参数。 5. **请求映射** 请求映射是SpringMVC中用来关联HTTP请求与控制器方法的关键机制。@RequestMapping可以指定URL路径、HTTP...
标题中的“源代码下载 第六章 注解式控制器详解”表明了我们即将探讨的是关于Spring MVC框架中的注解式控制器的深入理解,并且提供了一套相关的源代码供学习和参考。这一章节通常会涵盖如何使用注解来实现Web应用...
【Spring 3.0 MVC 注解详解】 Spring 3.0 的 MVC 框架引入了丰富的注解,使得开发者可以更加简洁、直观地编写 Web 应用程序,减少了传统 XML 配置的繁琐。这些注解使得控制器、请求映射、参数绑定等关键功能变得...