Bon emplacement de Thymeleaf vues pour le Printemps
Je suis en cours d'exécution d'un ressort de démarrage de l'application avec Thymeleaf. Quand je lance l'application par le biais de mon IDE (Ide) tout fonctionne très bien.
Cependant, lorsque je lance l'application via la ligne de commande (java -jar
) les points de vue ne sont pas à résoudre et j'obtiens l'erreur suivante:
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "index", template might not exist or might not be accessible by any of the configured Template Resolvers
at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:245)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)
at org.thymeleaf.spring3.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
at org.thymeleaf.spring3.view.ThymeleafView.render(ThymeleafView.java:190)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1225)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
Voici mes paramètres:
Ma Structure De Répertoire
PROJECT-ROOT
--src
--main
--java
--controllers
--[CLASS WITH MAIN METHOD]
--views
--index.html
Mon modèle de résolution:
@Bean
public ViewResolver viewResolver() {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setTemplateMode("XHTML");
templateResolver.setPrefix("views/");
templateResolver.setSuffix(".html");
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver);
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(engine);
return viewResolver;
}
Où dois-je mettre de la vue, de sorte qu'ils peuvent être résolus correctement lorsque couru à partir d'un fichier jar?
OriginalL'auteur Nick Humrich | 2014-04-05
Vous devez vous connecter pour publier un commentaire.
Je pense que la réponse est que cela dépend de votre configuration de build. Le répertoire "src/main/points de vue" n'est pas une norme de l'emplacement des ressources pour toutes les communes de construire l'outil, de sorte que vous devez explicitement l'ajouter à la configuration de l'outil que vous utilisez pour construire votre bocal.
Si j'étais vous, j'irais avec le flux (pourquoi serait-elle différente?), et il suffit d'utiliser "src/main/resources" pour classpath ressources. Je voudrais également laisser la thymeleaf configuration complètement et laissez Printemps poignée de Démarrage il, de mettre mes modèles en "src/main/resources/templates".
juste pour que les autres le savez, j'ai aussi dû changer ma prefex à
templates/
OriginalL'auteur Dave Syer
J'ai eu le même problème et a trouvé de l' Springboot documentation que le suivantes classpath sont utilisés par le framework:
Cela signifie que vous pouvez déposer un dossier de modèles dans l'un des répertoires suivants et les points de vue à l'intérieur vont être trouvé par votre application.
Exemple:
L'emplacement du fichier
/src/main/public/templates/index.html
Et dans l'application.propriétés
Note que depuis que vous êtes à l'aide de thymeleaf, vous avez tous deux besoin de l'importer dans vos dépendances (Maven?) et à utiliser dans votre code html comme ceci:
OriginalL'auteur slonepi