Spring启动:InternalResourceViewResolver不工作

时间:2016-09-18 09:00:57

标签: spring spring-mvc spring-boot

我花了几个小时尝试使用InternalResourceViewResolver来为html视图添加前缀和后缀。

我的观点位于static/pages/和Spring文档下,文件夹static被视为静态内容的默认值之一。因此,我可以通过pages/profile.html访问个人资料页面。但我真正想要的是profile而不是pages/profile.html

我已经尝试了几个答案,但这不起作用,例如:

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

并添加

    @Override
public void configureDefaultServletHandling(
        DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}  

仍然无法正常工作。 添加任何后缀或前缀,我无法在任何路径上找到页面。我开始在pages/profile.html上获得404,但它也没有出现在其他网址上。

2 个答案:

答案 0 :(得分:1)

只需要像这样添加自己的自定义配置

@Configuration
public class WebMvcConfig {
    @Bean
    public InternalResourceViewResolver defaultViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/jsp");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

然后你可以通过“http://localhost:8080/beans

检查所有的豆子

你可以使用自定义配置bean:

{

    "bean": "defaultViewResolver",
    "scope": "singleton",
    "type": "org.springframework.web.servlet.view.InternalResourceViewResolver",
    "resource": "class path resource [io/cloudhuang/web/WebMvcConfig.class]",
    "dependencies": [ ]

}

但最简单的方法应该是在applicatin.properties

中进行配置
spring.mvc.view.prefix=
spring.mvc.view.suffix=

答案 1 :(得分:0)

使用Spring Boot,您实际上不需要声明自己的InternalResourceViewResolver。 Boot为您声明了它,您只需在application.properties文件中添加几个属性即可。例如。在你的情况下,这些将是:

spring.mvc.view.prefix=/jsp
spring.mvc.view.suffix=.jsp