web-dev-qa-db-fra.com

Comment localiser le modèle Thymeleaf à partir de la botte de printemps

J'essaie de suivre ce tutoriel sur http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html pour savoir comment envoyer des réponses au modèle Thymeleaf. Mais j’obtiens cette erreur: Impossible de trouver l’emplacement du modèle: classpath:/templates/(veuillez ajouter des modèles ou vérifier votre configuration Thymeleaf)

J'ai mis le fichier message.html dans le répertoire Other Sources et à l'intérieur de src/main/resources sous <default package>

Donc, la structure ressemble à: 

SomeProject - Autres sources - src/main/resources ---<default package> ---- message.html

Je me demandais pourquoi cela apparaît sous <default package> mais pas sous <template>? Est-ce que ça pourrait être le problème? Si oui, comment suis-je censé le changer? J'utilise netbeans et maven. Des idées s'il vous plaît? Ce sont les dépendances que j'ai dans mon pom.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>            
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>

Dans le contrôleur j'ai 

@RequestMapping(value = "message", method = RequestMethod.GET)
    public String messages(Model model) {
    model.addAttribute("messages", messageRepository.findAll());
    return "message";
}

Et dans la vue: 

<ul th:each="message : ${messages}">
    <li th:text="${message.id}">1</li>
    <li><a href="#" th:text="${message.title}">Title ...</a></li>
    <li th:text="${message.text}">Text ...</li>
</ul>   
3
Gustav

2 choses ici: 1. Si vous utilisez Maven, je présume qu'aucune personnalisation des noms de dossier. Ensuite, le nom du dossier doit être src au lieu de source. 2. Une fois que le dossier a été renommé, déplacez vos modèles dans le dossier 'templates' de src/resources, cela devrait fonctionner correctement. 

0
Himanshu Bhardwaj

Spring Boot inclut la prise en charge de la configuration automatique pour les moteurs de templates thymeleaf. Vos modèles seront automatiquement récupérés à partir de src/main/resources/templates.

si vous personnalisez l'emplacement de votre modèle, utilisez ci-dessous la configuration de la propriété thymeleaf disponible dans Spring Boot.

  • spring.thymeleaf.check-template = true # Vérifiez que le modèle existe avant de le restituer.

  • spring.thymeleaf.check-template-location = true # Vérifiez que l'emplacement des modèles existe.

  • spring.thymeleaf.enabled = true # Activez la résolution de vue MVC Thymeleaf.

  • spring.thymeleaf.prefix = classpath:/templates/# Préfixe préfixé pour afficher les noms lors de la création d'une URL.

  • spring.thymeleaf.suffix = .html # Suffixe à ajouter pour afficher les noms lors de la création d'une URL.

7
Chandu

Pour les fichiers de modèle Thymeleaf, mettez-les dans le dossier src/main/resources/templates/et cela fonctionnera pour vous. Consultez aussi http://www.mkyong.com/spring-boot/spring-boot-hello-world-example -thymeleaf/ . J'espère que vous trouverez facile de lancer thymeleaf avec une chaussure de printemps.

1
Yogendra Mishra

L'emplacement de répertoire par défaut pour les modèles thymeleaf est:

src/main/resources/templates

Les autres chemins sont des conventions standard pour Spring Boot.

 Spring Boot thymeleaf directory structure

1
chocksaway