Spring Boot MVC在webapp文件夹而不是资源中查找文件

时间:2018-11-29 18:58:31

标签: spring spring-mvc spring-boot

据我了解,Spring默认情况下会在resources文件夹中查找文件。我正在尝试返回一个简单的index.ftl文件,如下所示:

@RequestMapping(method = RequestMethod.GET, value = "/")
public String index(Model model) {
    model.addAttribute("message", "Hello world!");
    return "index";
}

我已经这样配置了Freemarker:

@Bean
public FreeMarkerViewResolver freeMarkerViewResolver() {
    FreeMarkerViewResolver vr = new FreeMarkerViewResolver();
    vr.setPrefix("");
    vr.setSuffix(".ftl");
    vr.setCache(true);

    return vr;
}

@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
    FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
    configurer.setTemplateLoaderPath("templates/");

    return configurer;
}

我有index.ftl位于两个位置,一个位于resources/templates/index.ftl中,一个位于webapp/templates/index.ftl中。每个对象都有内容,让我知道要获取哪个,而Spring总是返回webapp。我没有看到设置任何配置来执行此操作,实际上,通过将以下内容放在webapp中,已显式配置它以使其不在application.properties中显示:

spring.mvc.static-path-pattern=/resources/**

我不确定还有什么要更改的,甚至不确定该如何停止。 Spring自己的文档说它将默认为resources,并且默认情况下不会搜索webapp文件夹,因此我不确定在此项目中可能在何处配置了该文件或如何停止这个。任何帮助表示赞赏。

编辑:当完全删除webapp文件夹,而仅将index.ftl留在resources内时,出现以下错误:

`无法在名称为'dispatcherServlet'的servlet中解析名称为'index'的视图

这是我的初始化程序类:

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { WebMvcConfig.class, WebFlowWithMvcConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}

0 个答案:

没有答案