2017-03-22 63 views
2

我在春天启动的应用程序下面的项目结构,其中我想用ThymeleafThymeleaf不能检测弹簧引导工程模板内

projectName 
    -Gradle-Module1(Spring boot module) 
     -build 
     -src 
      -main 
      -resources 
       -templates 
        index.html 
     build.gradle 
    -Gradle-Module2 
     ... 
    build.gradle 
    ... 

但弹簧引导找不到我的模板目录下,显示警告

Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration) 

PS:我使用@EnableAutoConfiguration

在我的控制器代码,我做这样的事情

@Controller 
@EnableAutoConfiguration 
public class BaseController { 

    @RequestMapping(value = "/") 
    public String index() { 
     return "index.html"; 
    } 
} 

index.html文件只是打印你好世界。

所以通常它应该看src/resources/templates/(我想是相同的Gradle模块),但不知何故它无法找到它。

,当我尝试访问localhost:8080 我得到以下错误Error resolving template "index.html", template might not exist or might not be accessible by any of the configured Template Resolvers 有什么我失踪?

任何指针赞赏。

谢谢。

+0

这是一个很好的问题。感谢问! – devdanke

回答

4

您应该只返回文件名。 E.g没有.hmtl

@RequestMapping(value = "/") 
    public String index() { 
    return "index"; 
} 
+0

试过,但面临的问题 '周三3月22日15时33分08秒IST 2017年 有意外的错误(类型=内部服务器错误,状态= 500)。 解决模板“索引”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问。 – Vihar

+0

请将您的类发布到requestmapping和index.html文件中,以便获得更多上下文。您是否使用任何形式的身份验证? – kkflf

+0

更新了问题 – Vihar

2
@GetMapping("/") 
public String index() { 
    return "index"; 
} 
+0

不工作要么 – Vihar

1

您必须配置Thymeleaf如下:

@Configuration 
public class ThymeleafConfig { 
    @Bean 
    public SpringResourceTemplateResolver templateResolver() { 
     SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); 
     templateResolver.setCacheable(false); 
     templateResolver.setPrefix("classpath:/templates/"); 
     templateResolver.setSuffix(".html"); 
     return templateResolver; 
    } 

    @Bean 
    public SpringTemplateEngine templateEngine() { 
     SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine(); 
     springTemplateEngine.addTemplateResolver(templateResolver()); 
     return springTemplateEngine; 
    } 

    @Bean 
    public ThymeleafViewResolver viewResolver() { 
     ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); 
     viewResolver.setTemplateEngine(templateEngine()); 
     viewResolver.setOrder(1); 
     return viewResolver; 
    } 
} 

Spring doc recommends@EnableAutoConfiguration注释添加到您的主@Configuration类。

而且好像你错了项目结构,典型的包层次是:

src 
    |- main 
     |- java 
     |- resources 
      |- static 
      |- templates 
    |- test 

在这种情况下,你的模板将在src/main/resources/templates,而不是在src/resources/templates/

+1

谢谢。行“templateResolver.setPrefix(”classpath:/ templates /“);”在使用jar包装运行Spring-Boot时,为我解决了这个问题。 – devdanke