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时,其中参数为视图名称,显示结果:

ModelAndView例子结果

总结

ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用(数据在一次请求转发中有效),用来在一个请求过程中传递处理的数据。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。