2017-03-22 28 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