Thymeleaf: Erreur De La Résolution Du Modèle
Je suis en train d'utiliser des mises en page/templates avec Thymeleaf mais je suis de l'exception suivante.
Exception de transformation de modèle d'utilisateur "/index": Erreur de la résolution du modèle "/layouts/default.html" le modèle peut ne pas exister ou ne pas être accessible par toute de la configuration du Modèle de Résolveurs
Voici mon ThymeleafConfig.java
@Configuration
public class ThymeleafConfig {
@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setOrder(1);
return resolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver());
engine.addDialect(new LayoutDialect());
engine.addDialect(new SpringSecurityDialect());
engine.addDialect(new SpringStandardDialect());
return engine;
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
return resolver;
}
}
J'ai la structure de dossier suivante
webapp/
..WEB-INF/
....views/
......layouts/
........default.html
......user
........index.html
Voici mon default.html qui est ma page principale.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Default</title>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<header>
This is a header from default.html
</header>
<section layout:fragment="content">
<p>Content should go here!</p>
</section>
<footer>
Footer from default
<p layout:fragment="custom-footer">Custom footer here!</p>
</footer>
<!-- scripts -->
<script src="https://code.jquery.com/jquery-2.1.3.min.js" />
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
</body>
</html>
Ici est la index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="layouts/default.html">
<head>
<title>Users</title>
</head>
<body>
<section layout:fragment="content">
<p>This is a paragraph from content page 1</p>
</section>
<footer>
<p layout:fragment="custom-footer">This is some footer content from content page 1</p>
</footer>
</body>
</html>
Ils sont dans des dossiers différents, mais le cheminement devrait fonctionner, sauf si je suis en manque juste quelque chose de vraiment stupide.
OriginalL'auteur jkratz55 | 2015-03-28
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé mon problème. Si vous spécifiez le suffixe dans votre Thymeleaf config vous n'avez pas besoin .l'extension html.
Il devrait être:
Au lieu de:
Je suppose que c'était effectivement à la recherche pour layouts/default.html.html ce qui serait un problème.
OriginalL'auteur jkratz55
J'ai résolu ce problème en ayant le code suivant:
}
L'astuce est d'ajouter:
emailTemplateResolver.setPrefix("classpath:/templates/");
OriginalL'auteur Shehan Simen
Vous ne devriez pas lui donner l'extension.Et vous devez fournir le bon chemin, comme ce
mise en page:décorateur="../layouts/default"
OriginalL'auteur love kumar