ModelAndView类详解
ModelAndView中包含了一个model属性和一个view属性,model其实是一个ModelMap类型,它是一个LinkedHashMap的子类,view包含了一些视图信息。
构造方法
ModelAndView() //默认构造函数豆式的用法:填充bean的属性,而不是将在构造函数中的参数。 ModelAndView(String viewName) //方便的构造时,有没有模型数据暴露。 ModelAndView(String viewName, Map model) //给出创建一个视图名称和模型新的ModelAndView。 ModelAndView(String viewName, String modelName, Object modelObject) //方便的构造采取单一的模式对象。 ModelAndView(View view) //构造方便在没有模型数据暴露。 ModelAndView(View view, Map model) //创建给定一个视图对象和模型,新的ModelAndView。 ModelAndView(View view, String modelName, Object modelObject) //方便的构造采取单一的模式对象。
类方法
ModelAndView addAllObjects(Map modelMap) //添加包含在所提供的地图模型中的所有条目。 ModelAndView addObject(Object modelObject) //添加对象使用的参数名称生成模型。 ModelAndView addObject(String modelName,ObjectmodelObject) //对象添加到模型中。 void clear() //清除此ModelAndView对象的状态。 Map getModel() //返回的模型图。 protectedMap getModelInternal() //返回的模型图。 ModelMap getModelMap() //返回底层ModelMap实例(从不为null)。 View getView() //返回View对象,或者为null,如果我们使用的视图名称由通过一个ViewResolverDispatcherServlet会得到解决。 String getViewName() //返回视图名称由DispatcherServlet的解决,通过一个ViewResolver,或空,如果我们使用的视图对象。 boolean hasView() //指示此与否的ModelAndView有一个观点,无论是作为一个视图名称或作为直接查看实例。 boolean isEmpty() //返回此ModelAndView对象是否为空,即是否不持有任何意见,不包含模型。 boolean isReference() //返回,我们是否使用视图的参考,i.e. void setView(Viewview) //设置此ModelAndView的视图对象。 void setViewName(StringviewName) //此ModelAndView的设置视图名称,由通过一个ViewResolverDispatcherServlet会得到解决。 String toString() //返回这个模型和视图的诊断信息。 boolean wasCleared()?? //返回此ModelAndView对象是否为空的调用的结果,以清除(),即是否不持有任何意见,不包含模型。
配置
在application.xml中配置支持ModelAndView,配置方式有两种。
//配置一 <bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <!-- 视图文件的前缀 --> <property name="suffix" value=".jsp"></property> <!-- 视图文件的后缀名 --> <!-- view是用什么显示,这里是jsp,还可以用velocity之类的 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> </bean> //配置二 <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"></bean>
例子(向ModelAndView中添加数据)
@RequestMapping("/test") public ModelAndView test(){ ModelAndView mav=new ModelAndView("hello"); mav.addObject("time", new Date()); mav.getModel().put("name", "caoyc"); return mav; } //JSP页面 time:${requestScope.time} <br/> name:${name }
在实例化ModelAndView时,其中参数为视图名称,显示结果:
总结
ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用(数据在一次请求转发中有效),用来在一个请求过程中传递处理的数据。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。