如何在 Spring Boot 中使用注释配置视图解析器? [复制]

Posted

技术标签:

【中文标题】如何在 Spring Boot 中使用注释配置视图解析器? [复制]【英文标题】:how to configure view resolver using annotations in spring boot? [duplicate] 【发布时间】:2017-05-10 09:01:49 【问题描述】:

我已经在 DispatcherServlet xml 文件中配置了视图解析器。但是如何在 Spring Boot 中使用注解配置视图解析器呢?

【问题讨论】:

【参考方案1】:

来自Spring Boot documentation:

如果您想保留 Spring Boot MVC 功能,并且只想添加 额外的 MVC 配置(拦截器、格式化程序、视图 控制器等)您可以添加自己的 @Configuration 类型的类 WebMvcConfigurerAdapter,但没有 @EnableWebMvc。如果你想 提供 RequestMappingHandlerMapping 的自定义实例, RequestMappingHandlerAdapter 或 ExceptionHandlerExceptionResolver 你 可以声明一个提供此类的 WebMvcRegistrationsAdapter 实例 组件。

如果你想完全控制 Spring MVC,你可以添加你的 拥有带有@EnableWebMvc 注释的@Configuration。

你可以做到的:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter 

    @Bean
    public ViewResolver getViewResolver() 
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/");
        resolver.setSuffix(".html");
        return resolver;
    

当然,前缀和后缀要根据自己的实际配置进行调整。


编辑以在/ 是请求时处理对页面的重定向:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter 

    @Bean
    public ViewResolver getViewResolver() 
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/");
        resolver.setSuffix(".html");
        return resolver;
    
     // add a mapping for redirection to index when / requested
    @Override
    public void addViewControllers(ViewControllerRegistry registry) 
        registry.addViewController("/").setViewName("forward:/index");
    

【讨论】:

我的 index.html 在根文件夹中。我希望在运行 localhost:8080 时打开 index.html。我该怎么做呢 您可以添加一个映射来进行重定向。我只是在我的答案中添加了这个来说明如何做到这一点。但通常如果 index.html 位于根目录,则不需要它。 但它向我显示了这个错误:此应用程序没有 /error 的显式映射,因此您将其视为后备。 确实是一个后备。您应该编辑您的问题并显示资源文件的布局,这有助于理解:) 好的,我在上面的代码中将前缀设置为“/WEB-INF/”,“/index”的映射是import org.springframework.stereotype.Controller;导入 org.springframework.web.bind.annotation.RequestMapping; @Controller public class GreetingController @RequestMapping("/index") public String greeting() return "index";

以上是关于如何在 Spring Boot 中使用注释配置视图解析器? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IntelliJ 上使用 @ConfigurationProperties 为 Spring Boot 配置注释处理器进行配置?

如何检查spring boot应用程序在自动配置类中是不是有某个注释

如何使用 Spring MVC & Security、Jasig CAS 和 JSP 视图在 Spring Boot 2 中配置 UTF-8?

如何在 Spring Boot 应用程序中为带有 @Configuration 注释的类编写单元测试用例

使用 Groovy、IntelliJ 和 Gradle 在项目中“重新运行 Spring Boot 配置注释处理器”

@ConfigurationProperties Spring Boot 配置注释处理器在类路径中找不到