>
我们需要为添加到ModelAndView的一组或者多组模型数据提供相应的键(Key),以便具体的View实现类可以根据这些键获取具体的模型数据,然后公开给视图模板。通常,模型中的数据对应的键需要与视图模板中的标志符相对应,如图所示:
基于JSP/JSTL模板的视图实现,通常是将模型数据通过>
但不管什么视图类型,对应的视图模板都将可以通过添加到ModelAndView的模型数据的键来获取模型数据,并合并到最终的视图输出结果中。
:ModelAndView 的构造方法有7个。但是它们都是相通的。这里使用无参构造函数来举例说明如何构造ModelAndView 实例。
ModelAndView 类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。
最简单的ModelAndView是持有View的名称返回,之后View名称被view resolver,也就是实作orgspringframeworkwebservletView接口的实例解析,例如 InternalResourceView或JstlView等等。
ModelAndView(String viewName) 如果您要返回Model对象,则可以使用Map来收集这些Model对象,然后设定给ModelAndView,使用下面这个版本的 ModelAndView: ModelAndView(String viewName, Map model) Map对象中设定好key与value值。
之后可以在视图中取出,如果您只是要返回一个Model对象,则可以使用下面这个 ModelAndView版本: ModelAndView(String viewName, String modelName, Object modelObject) 藉由modelName,您可以在视图中取出Model并显示。
webservletView的实例,View接口如下: public interface View { public void render(Map model, >
View的实作之前用过 orgspringframeworkwebservletviewInternalResourceView,另外也还有JstlView、 TilesView、VelocityView等等的实作,分别进行不同的表现展处理 。
ModelAndView() 这个构造方法构造出来的ModelAndView 不能直接使用,应为它没有指定view,也没有绑定对应的model对象。当然,model对象不是必须的,但是view确实必须的。 用这个构造方法构造的实例主要用来在以后往其中加view设置和model对象。
给ModelAndView 实例设置view的方法有两 个:setViewName(String viewName) 和 setView(View view)。前者是使用view name,后者是使用预先构造好的View对象。
其中前者比较常用。事实上View是一个接口,而不是一个可以构造的具体类,我们只能通过其他途径来获取 View的实例。对于view name,它既可以是jsp的名字,也可以是tiles定义的名字,取决于使用的ViewNameResolver如何理解这个view name。
如何获取View的实例以后再研究。 而对应如何给ModelAndView 实例设置model则比较复杂。有三个方法可以使用: addObject(Object modelObject) addObject(String modelName, Object modelObject) addAllObjects(Map modelMap) ModelAndView 可以接收Object类型的对象,ModelAndView 将它视为其众多model中的一个。
当使用Object类型的对象的时候,必须指定一个名字。ModelAndView 也可以接收没有明显名字的对象,原因在于ModelAndView 将调用spring自己定义的Conventions 类的getVariableName()方法来为这个model生成一个名字。
以上就是关于@ControllerAdvice 和 @RestControllerAdvice 拦截异常并且统一管理全部的内容,包括:@ControllerAdvice 和 @RestControllerAdvice 拦截异常并且统一管理、Java中ModelAndView是做什么的、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)