@ControllerAdvice 和 @RestControllerAdvice 拦截异常并且统一管理

@ControllerAdvice 和 @RestControllerAdvice 拦截异常并且统一管理,第1张

>

我们需要为添加到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是做什么的、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9600405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存