1.概述

所有MVC框架都提供了一种处理视图的方法。

Spring通过视图解析器实现这一点,它使您能够在浏览器中呈现模型,而无需将实现绑定到特定的视图技术。

ViewResolver将视图名称映射到实际视图。

Spring框架提供了相当多的视图解析器。InternalResourceViewResolver,XmlViewResolver,ResourceBundleViewResolver还有一些其他的。

这是一个简单的教程,展示了如何设置最常见的视图解析器和如何使用多重ViewResolver在相同的配置下

2.Spring Web配置

让我们从web配置开始;我们将用@EnableWebMvc,@ configuration@ComponentScan:

@EnableWebMvc @Configuration @ComponentScan("com.金宝搏188体育baeldung.web") public class WebConfig implements WebMvcConfigurer{//所有web配置将在这里}

在这里,我们将在配置中设置视图解析器。

3.添加一个InternalResourceViewResolver

ViewResolver允许我们设置视图名称的前缀或后缀等属性,以生成最终的视图页面URL:

@Bean公共ViewResolver internalResourceViewResolver() {internalResourceViewResolver bean =新的internalResourceViewResolver();bean.setViewClass (JstlView.class);bean.setPrefix(“/ web - inf /视图/”);bean.setSuffix (jsp);返回bean;}

这样简单在这个示例中,我们不需要控制器来处理请求。

我们只需要简单的jsp页,放置在/ web - inf /视图配置中定义的文件夹:

   

4.添加一个ResourceBundleViewResolver

正如这个解析器的名字所暗示的ResourceBundleViewResolver控件中使用bean定义ResourceBundle

首先,我们添加ResourceBundleViewResolver到上一个配置:

@Bean公共ViewResolver resourceBundleViewResolver() {resourceBundleViewResolver bean =新的resourceBundleViewResolver();bean.setBasename(“视图”);返回bean;}

bundle通常在类路径中的属性文件中定义。下面是views.properties文件:

样本。(类)= org.springframework.web.servlet.view。JstlView sample.url = / web - inf /视图/ sample.jsp

我们可以用简单的方法jsp页,在上面的例子中也为这个配置定义。

5.添加一个XmlViewResolver

这个实现的ViewResolver接受写入的配置文件XML用同样的DTD春天的XMLbean工厂:

@Bean公共ViewResolver xmlViewResolver() {xmlViewResolver bean =新的xmlViewResolver();bean。setLocation(新ClassPathResource(“views.xml”);返回bean;}

下面是配置文件,views.xml:

< bean id = " xmlConfig " class = " org.springframework.web.servlet.view。JstlView">   .jsp

至于前面的例子我们可以利用简单的jsp页面定义之前。

6.链接ViewResolvers定义订单优先级

Spring MVC也支持多个视图解析器

这允许您在某些情况下重写特定的视图。通过向配置中添加多个解析器,我们可以简单地将视图解析器链起来。

一旦我们完成了这些,我们将需要为这些解析器定义一个顺序。的订单财产用于定义链中调用的顺序。order属性(最大订单号)越高,视图解析器在链中的位置就越晚。

为了定义顺序,我们可以在视图解析器的配置中添加以下代码行:

bean.setOrder (0);

要注意顺序优先级为InternalResourceViewResolver应该有更高的顺序-因为它打算表示一个非常显式的映射。如果其他解析器有更高的顺序,那么InternalResourceViewResolver可能永远不会被调用。

7.结论

在本教程中,我们使用Java配置配置了一系列视图解析器。通过处理优先级的顺序,我们可以设置它们调用的顺序。

文档中可以找到这个简单教程的实现github项目

通用的底部

开始使用Spring 5和Spring Boot 2,通过学习的春天课程:

>>看看这个课程
2评论
最古老的
最新的
内联反馈
查看所有评论
对这篇文章的评论关闭!