Spring Boot donne “TemplateInputException: Erreur de résoudre le modèle lors de l'exécution de jar
J'ai une application qui fonctionne parfaitement lorsqu'il est lancé au sein de l'Ide, ou par l'intermédiaire de gradle bootRun.
toutefois, si je ne gradle bootRepackage et puis essayer de courir la résultante de pot, je me retrouve avec:
2014-12-02 21:46:14.086 ERROR 9839 --- [nio-2014-exec-2] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-2014-exec-2] Exception processing template "/login": Error resolving template "/login", template might not exist or might not be accessible by any of the configured Template Resolvers
2014-12-02 21:46:14.087 ERROR 9839 --- [nio-2014-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/login", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/login", 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.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
Je peux voir que le pot a /templates/** contenue. le contenu semble OK pour moi.
Un possible(?) le facteur peut être que j'utilise une page html se référant à un modèle, donc:
layout:decorator="layouts/main"
Je peux confirmer que le fichier EST dans le pot.
/connexion est définie ainsi:
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("/login");
registry.addViewController("/").setViewName("/login");
}
et j'ai de la sécurité printemps configuré comme:
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity security) {
security.ignoring().antMatchers("/assets/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable();
http
.authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated();
http
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/home")
.failureUrl("/login?error")
.permitAll()
.and()
.logout()
.invalidateHttpSession(true)
.logoutSuccessUrl("/login?logout")
.permitAll();
}
}
Je pense que c'est tout ce qui pourrait être pertinente à cette question...
J'ai vu https://github.com/spring-projects/spring-boot/issues/112 et Bon emplacement de Thymeleaf vues pour le Printemps (parmi d'autres). Ces ressources nonobstant, je n'ai pas réussi à obtenir le modèle de résolution de travail.
Des suggestions reçu avec gratitude.
D'être venu si loin avec Spring Boot pas encore tombé à la dernière haie (à proximité de finale de déploiement) est vexatoire.
OriginalL'auteur Bob Brown | 2014-12-02
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème à l'aide de spring boot avec thymeleaf par défaut de configuration. Tous travaillé jusqu'à ce que je dois essayer .jar
message dit:
... org.thymeleaf.des exceptions.TemplateInputException: Erreur de la résolution du modèle "/fragments/pied de page"
J'ai résolu de jouer avec /, le problème est qu'ils n'ont pas besoin de la barre oblique.
J'ai Changé cela:
pour cela:
OriginalL'auteur user2822874
La réponse semble être ici: https://github.com/spring-projects/spring-boot/issues/1744
En un mot: si une ressource de chemin d'accès contient '//', les choses aller à vau-l'eau.
La solution est de modifier l'application.yml ainsi:
(la solution est identique pour un .fichier de propriétés, bien sûr)
L'effet d'entraînement est que toutes les références à des modèles ou que ce soit doivent être précédés d'une barre oblique, comme dans (Thymeleaf .fichier html):
ou (Groovy contrôleur):
Je penser que le printemps de démarrage devrait résoudre ce problème. De toute urgence. C'est VRAIMENT de la mauvaise ergonomie que des coups de mal, juste à l'endroit où l'on se sent comme une approche de déploiement final.
spring.thymeleaf.prefix=classpath:/templates/
Malheureusement, ce n'est pas corrigé pour moi, ont exactement le même problème. Eclipse fonctionne, avec l'exécutable jar cant résoudre modèle ... 🙁
OriginalL'auteur Bob Brown
Bon, j'ai trouvé où vous avez à regarder de plus près. Dans vos classes de Contrôleur, lorsque vous utilisez
@RequestMapping
sur la classe, pas de barre oblique (par exemple@RequestMapping("property")
). Sur la Méthode, vous avez besoin d'un slash (par exemple@GetMapping("/list")
) et la valeur de retour pas de barre oblique (par exemplereturn "property/list";
)Un Exemple Extrait De
OriginalL'auteur Michael Hegner
printemps.thymeleaf.préfixe=classpath:/templates/
changement
à
le nom de la vue doit être Relative chemin
OriginalL'auteur s332401890
Après de nombreuses tentatives, j'ai trouvé un moyen de résoudre mon problème sur le modèle d'erreur. Je ne sais pas si c'est lié à la nouvelle version de printemps de la chaussure, mais mon changement travaillé.
Chaque demande via le contrôleur au lieu de retourner une Chaîne de caractères "/login", par exemple, je change de créer un objet ModelAndView:
bisous à tous.
OriginalL'auteur Paulo Cesar Pengo
J'ai affronté le problème lors de l'utilisation de la
spring-boot-starter-thymeleaf
dépendanceJ'ai donc utilisé le dessous de la dépendance au lieu de cela,
OriginalL'auteur firstpostcommenter