springmvc 在方法上使用 @ModelAttribute 注解

在方法上使用 @ModelAttribute 注解

@ModelAttribute注解不仅可以用在方法上也可以用在方法参数上。本节讲述@ModelAttribute在方法上的使用,下一节将讲述其在方法参数上的使用。

在方法上使用 @ModelAttribute
注解的目的是添加一个或者多个model属性中。这些方法支持@RequestMapping方法对应的参数,但是不能直接和请求映射。 在同一个Controller中@ModelAttribute 注解的方法将先于@RequestMapping注解的方法被调用。请看下面的例子:

 
 
// 添加一个属性

// 方法的返回值以”account”作为键添加到了model中

// 你可以通过 @ModelAttribute("myAccount")来指定名称

@ModelAttribute

public Account addAccount(@RequestParam String number) {

return accountManager.findAccount(number);

}

// 添加多个属性

@ModelAttribute

public void populateModel(@RequestParam String number, Model model) {

model.addAttribute(accountManager.findAccount(number));

// add more ...

}

@ModelAttribute 方法用来将一般属性填充到model
中,如用状态或者宠物类型填充下拉列表,或者用来恢复一个如Account命令对象用来表示html表单中的数据。后一种情况在下一节中将作详细阐述。

请注意两种@ModelAttribute方法风格,第一种:通过返回对象添加属性。第二种:方法含有Model作为参数,通过Model来添加任何数量的属性。你可以根据需要去选择。

一个controller(控制器)可以含有任意数量的 @ModelAttribute方法。同一个controller中所有这些方法在将先于 @RequestMapping
方法调用。

@ModelAttribute 也可以定义在被@ControllerAdvice注解的类中,这些方法将被应用到很多controller中。想了解更多相关信息请看:“Advising controllers with the@ControllerAdvice 
“这一节。

提示:

如果一个model attribute(模型属性)名没有被明确指定会怎样?

在这种情况下,将高根据模型属性的类型来分配默认的名称。例如,如果方法返回一个Account类型的对象,默认模型属性名是"account".
你可以通过修改 @ModelAttribute 注解的value来修改模型属性的名称。如果想把属性直接添加到Model中.你可以使用适当的addAttribute(..) 重载方法。也就是说,带不带属性名都可以。

时间: 2024-10-10 16:15:35

springmvc 在方法上使用 @ModelAttribute 注解的相关文章

7、SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解

从上一篇 SpringMVC源码分析(1) 中我们了解到在DispatcherServlet.doDispatch方法中会通过 mv = ha.handle(processedRequest, response, mappedHandler.getHandler()) 这样的方式来执行request的handler方法. 先来分析一下ha.handle方法的调用过程:HandlerAdapter接口有一个抽象实现类AbstractHandlerMethodAdapter,在该抽象类中通过具体方法

springmvc在使用@ModelAttribute注解获取Request和Response会产生线程并发不安全问题(转)

springmvc在获取Request和Response有很多方式:具体请看:https://www.cnblogs.com/wade-luffy/p/8867144.html 产生线程问题的代码如下: public class BaseController { protected HttpServletRequest request; protected HttpServletResponse response; protected HttpSession session; @ModelAtt

springmvc的ModelAttribute注解

先看一个没有使用@ModelAttribute的Controller方法. [java] view plain copy @RequestMapping("/save") public String save(User user) { user.setUsername("U love me"); userService.save(user); return "result"; } 其中User包含id和username两个私有属性,含有公共set

SpringMVC(AbstractController,拦截器,注解)

1.Controller接口及其实现类 Controller是控制器/处理器接口,只有一个方法handleRequest,用于进行请求的功能处理(功能处理方法),处理完请求后返回ModelAndView对象(Model模型数据部分 和 View视图部分). 如果想直接在处理器/控制器里使用response向客户端写回数据,可以通过返回null来告诉DispatcherServlet我们已经写出响应了,不需要它进行视图解析 Spring默认提供了一些Controller接口的实现类以方便我们使用,

Spring的@ModelAttribute注解

1. 一.绑定请求参数到指定对象 Java代码   public String test1(@ModelAttribute("user") UserModel user) 只是此处多了一个注解@ModelAttribute("user"),它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用.我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性. 如请求参数包含“?username=zhang&p

Spring MVC之@ModelAttribute注解的使用

@ModelAttribute注解的作用 Spring MVC提供了几种将数据添加到模型的方式:使用ModelMap/Model类型的方法参数.方法体内创建ModelAndView实例,如下代码片段所示: @RequestMapping(value = "/login.htm", method = RequestMethod.GET) public String doLogin(ModelMap modelMap) { BaseMember mockMember = new BaseM

@ModelAttribute 注解

[email protected]注释方法 例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用. (1)@ModelAttribute注释void返回值的方法 @Controller public class HelloWorldController { @ModelAttribute public void populateModel(@RequestPa

18.3.2从Class上获取信息(注解)

package d18_3_1; /** * Class类上所包含的注解 * * getAnnotation(Class annotationClass) 获取该元素上指定的类型的注解 * getAnnotations():返回此元素上存在的所有注解 * getDeclaredAnnotations():返回直接存在于此元素上的所有注解 */ import java.lang.annotation.Annotation; import java.lang.reflect.Field; impor

Spring:使用Spring AOP时,如何获取目标方法上的注解

当使用spring AOP时,判断目标方法上的注解进行相关操作,如缓存,认证权限等 自定义注解 package com.agent.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.