spring MVC之构造ModelAndView对象
----------
构造ModelAndView对象
当控制器处理完请求时,通常会将包含视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet。因此,经常需要在控制器中构造ModelAndView对象。ModelAndView类提供了几个重载的构造器和一些方便的方法,让你可以根据自己的喜好来构造ModelAndView对象。这些构造器和方法以类似的方式支持视图名称和视图对象。
当你只有一个模型属性要返回时,可以在构造器中指定该属性来构造ModelAndView对象:
- package com.apress.springrecipes.court.web;
- ...
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.AbstractController;
- public class WelcomeController extends AbstractController{
- public ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response)throws Exception{
- Date today = new Date();
- return new ModelAndView("welcome","today",today);
- }
- }
如果有不止一个属性要返回,可以先将它们传递到一个Map中再来构造ModelAndView对象。
- package com.apress.springrecipes.court.web;
- ...
- import org.springframework.web.servlet.ModelAndView;
- import org. springframework.web.servlet.mvc.AbstractController;
- public class ReservationQueryController extends AbstractController{
- ...
- public ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response)throws Exception{
- ...
- Map<String,Object> model = new HashMap<String,Object>();
- if(courtName != null){
- model.put("courtName",courtName);
- model.put("reservations",reservationService.query(courtName));
- }
- return new ModelAndView("reservationQuery",model);
- }
- }
Spring也提供了ModelMap,这是java.util.Map实现,可以根据模型属性的具体类型自动生成模型属性的名称。
- package com.apress.springrecipes.court.web;
- ...
- import org.springframework.ui.ModelMap;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.AbstractController;
- public class ReservationQueryController extends AbstractController{
- ...
- public ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response)throws Exception{
- ...
- ModelMap model = new ModelMap();
- if(courtName != null){
- model.addAttribute("courtName",courtName);
- model.addAttribute("reservations",reservationService.query(courtName));
- }
- return new ModelAndView("reservationQuery",model);
- }
- }
由于这两个模型属性的类型为String和List<Reservation>,ModelMap会为它们生成默认的名称----string和reservationList。如果你不喜欢这些名称,可以显式地指定它们。
构造完ModelAndView对象之后,仍然可以利用addobject()方法为它添加模型属性。这个方法返回ModelAndView对象
本身,因此可以在一个语句中构造ModelAndView对象。请注意,你也可以省略addObject()方法的属性名称。在这种情况下,这个方法会与ModeMap生成相同的属性名称。
- package com.apress.springrecipes.court.web;
- ...
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.AbstractController;
- public class ReservationQueryController extends AbstractController{
- ...
- public ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response)throws Exception{
- ....
- List<Reservation> reservations = null;
- if(courtName != null){
- reservations = reservationService.query(courtName);
- }
- return new ModelAndView("reservationQuery","courtName",courtName)
- .addObject("reservations",reservations);
- }
- }
事实上,返回的模型和视图都是可选的。在有些情况下,你只返回视图,模型中没有任何属性。或者只返回模型,让Spring MVC根据请求URL来决定视图。有时候,如果让控制器直接处理HttpServletResponse对象,甚至可以返回null,例如在将二进制文件返回给用户的时候。
spring MVC之构造ModelAndView对象的更多相关文章
- spring mvc 3.0 ModelAndView模型视图类
见名知意,从名字上我们可以知道ModelAndView中的Model代表模型,View代表视图.即,这个类把要显示的数据存储到了Model属性中,要跳转的视图信息存储到了view属性.我们看一下Mod ...
- [Java Web学习]Spring MVC使用普通类对象,声明的对象为null
由于对Spring还不熟悉,目前还处于学习阶段,因此经常会遇到一些小白问题,这个问题需要在Spring文件中将普通对象注入bean,然后在MVC中添加set方法,填充普通对象.
- Spring MVC(九)--控制器接受对象列表参数
前一篇文章介绍是传递一个参数列表,列表中的元素为基本类型,其实有时候需要传递多个同一类型的对象,测试也可以使用列表,只是列表中的元素为对象类型. 我模拟的场景是:通过页面按钮触发传递参数的请求,为了简 ...
- Spring MVC中如何传递对象参数
springController: @Controller @RequestMapping("/user") public UserController extends BaseC ...
- Spring MVC控制层传递对象后在JSP页面中的取值方法
List<Order> orders = new ArrayList<Order>(); for (int i = 0; i < 3; i++) { Order t = ...
- spring mvc 处理pojo传递对象时该对象继承父类的属性在网络接收端接收该属性值总是null,why?
//=========================== 情形一: ===============================//在网络上传递User1类对象时info属性值在网络的另一端能够接 ...
- 二十、MVC的WEB框架(Spring MVC)
一.Spring MVC 运行原理:客户端请求提交到DispatcherServlet,由DispatcherServlet控制器查询HandlerMapping,找到并分发到指定的Controlle ...
- Spring MVC教程——检视阅读
Spring MVC教程--检视阅读 参考 Spring MVC教程--一点--蓝本 Spring MVC教程--c语言中午网--3.0版本太老了 Spring MVC教程--易百--4.0版本不是通 ...
- Spring MVC对象转换说明
在Spring MVC之前我们需要在Servlet里处理HttpServletRequest参数对象,但这个对象里的属性都是通用类型的对象(如字符串),处理起来很繁琐并且容易出错,而Spring MV ...
随机推荐
- 数学图形之克莱因瓶(klein bottle)
克莱因瓶是一种内外两面在同一个曲面上的图形. 在数学领域中,克莱因瓶(德语:Kleinsche Flasche)是指一种无定向性的平面,比如二维平面,就没有“内部”和“外部”之分.克莱因瓶最初的概念提 ...
- 附4 springboot源码解析-run()
public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); / ...
- Cesium随笔(1)部署自己的项目 【转】
Cesium是国外开发的基于Webgl的跨浏览器的三维地球显示的Javascript开源库,只要浏览器支持Webgl,html5就可以运行.甚至部分手机浏览器都可以运行 . 首先,对Cesium进行本 ...
- WebChromeClient 简介 API 案例
代码位置:https://github.com/baiqiantao/WebViewTest.git 设计思想理解 在WebView的设计中,不是什么事都要WebView类干的,有相当多的杂事是分给其 ...
- 五个瓶颈影响你的Asp.Net程序(网站)性能
在今天的手机设备世界里,生活的节奏继续加快,因此访问你的网站的用户的耐心也在渐渐失去.同时,我提供了非常多的特性,为了防止你的网站变得过时或者廉价,你必须跟上竞争对手.你想赢得访问者的喝彩,但访问者没 ...
- C#匿名方法与Delegate类型转换错误
问题描述 C#2.0出现了匿名方法, 这在一定程度上节省了我们维护代码上下文的精力, 也不需要思考为某个方法取什么名字比较合适. 在FCL的一些方法中要求传入一个Delegate类型的参数, 比如Co ...
- android 随手记 摄像头录像
1 xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi ...
- IE8中伪元素动态作用样式不重绘bug记录
前阵子对公司框架的前端优化中,使用了字体图标(iconfont)来做模块的图标集,供用户进行配置选择. 字体图标的有非常好的灵活性和复用性,可以像处理文字一样通过font-size进行大小设置.通过c ...
- 转:好用 Eclipse插件收集与说明
http://developer.51cto.com/art/201007/214478.htm
- PREEMPT_RT的未来
因为开发资金的问题,Thomas Gleixner宣布他已经不想干了. 商业公司往往用了PREEMPT_RT的功能去不愿意去回报社区,那就自己弄吧. http://lwn.net/Articles/6 ...