[@Controller]4 详解@ModelAttribute.docx_第1页
[@Controller]4 详解@ModelAttribute.docx_第2页
[@Controller]4 详解@ModelAttribute.docx_第3页
[@Controller]4 详解@ModelAttribute.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

A、ModelAttributeAnnotation 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 in a 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的属性valueThe 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.默认的模型属性名称自动判断声明的属性类型(如,方法参数类型或方法返回类型)。如这个值是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返回值的方法举例说明Controllerpublic class HelloWorldController ModelAttributepublic 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注释返回具体类的方法举例说明ModelAttributepublic Account addAccount(RequestParam String number) return accountManager.findAccount(number);这种情况,model属性的名称没有指定,它由返回类型隐含表示,如这个方法返回Account类型,那么这个model属性的名称是account。这个例子中model属性名称有返回对象类型隐含表示,model属性对象就是方法的返回值。它无须要特定的参数。B.3、ModelAttribute(value=)注释返回具体类的方法举例说明Controllerpublic 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同时注释一个方法举例说明Controllerpublic 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 arguments 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属性中获取。举例说明Controllerpublic 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) U

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论