IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

Problème d'affiche avec ThymeLeaf


Sujet :

Spring Boot Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 111
    Par défaut Problème d'affiche avec ThymeLeaf
    Bonjour,

    Je débute avec Spring boot.
    J'ai créer un nouveau projet avec pring STool Suit.
    J'ai pris les briques Spring MVC et web, JPA, MySql et ThymeLeaf

    Et j'ai un problème avec ThymeLeaf
    Je ne connaissait pas, habituellement j'utilise JSP et JSTL.
    Il semble que c'est le choix par défaut avec Spring boot.

    Mes attributs ne s'affiche pas dans ma vue

    Pour l'instant je n'ai pas encore utilisé la partie base de données

    Je travaille avec :
    - Windows 10
    - eclipse-jee-2019-03-R
    - JDK 11
    - Wamp pour avoir MySql

    Je n'ai pas touché au POM mais j'ai une erreur bizarre
    Description	Resource	Path	Location	Type
    Unknown	pom.xml	/xComptaSpringBoot	line 1	Maven Configuration Problem
    J'ai modifié mon fichier 'application.properties ' pour avoir ma connectionMysql, même si je ne l'utilise pas encore, car sinon le conteneur ne se lance pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # DATABASE
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/Xcompta?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=
    # JPA Hibernate
    # jpaspring.jpa.show-sql=true
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
    J'ai du ajouté des arguments en fin d'URL jdbc, sinon mysql recherche des infos sur le fuseau

    J'ai ajouté un controller 'MainController.java'dans package controller dans le dossier java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    package controller;
     
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
     
    import fr.xcomptadomain.Journal;
     
    @Controller
    public class MainController {
    	//@Autowired
    	// private JournalRepository journalReposiitory;
    	// private JournalRepository journalRepository;
     
    	@GetMapping("/"	)
    	public String index(Model model) {
     
    		model.addAttribute("msg", "Bonjour");
     
    		return "index";
    	}
     
    ...
    J'ai créé une page index.html que j'ai ajouté dans templates
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <!DOCTYPE html>
    <html xmlns:th="www.thymeleaf.org">
    <!DOCTYPE HTML>
    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    ***<head
    <meta charset="ISO-8859-1">
    <title>First Thymeleaf Page</title>
    </head>
    <body>
     
    <li>
    <ul><a href="/">index</a></ul>
    <ul><a href="journalList">Journal list</a>
    </ul>
    </li>
     
    <p th:text="${msg}"></p>
     
    </body>
    </html>

    J'appelle la page par 'localhost:8080/' et la rappelle par le lien dans ma vue.
    Mais la variable ne passe jamais la vue est complété par du vide.
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <p th:text="${msg}"></p>

    Je pense que c'est une erreur stupide de débutant, mais j'ai beau chercher je ne trouve pas

    Si vous pouviez m'éclairer.

    Cordialement
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    J'ai modifié mon fichier 'application.properties ' pour avoir ma connectionMysql, même si je ne l'utilise pas encore, car sinon le conteneur ne se lance pas.
    Tu peux désactiver l'utilisation d'un dataSource par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
    https://docs.spring.io/spring-boot/d...ration-classes

    Pour ton problème, essaie de corriger ton header ici:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!DOCTYPE html>
    <html xmlns:th="www.thymeleaf.org">
    <!DOCTYPE HTML>
    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    ***<head
    A+.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 111
    Par défaut
    Merci andry.aime

    Merci pour le code qui permet de suspende le datasourcre
    Est-cce génant d'avoir un datasource pour rien ?
    De toute façon j'ai commencé à utiliser le DAO
    Mais c'est bon à savoir.

    J'ai corrigé les fichiers html dans le dossier "templates", avec l'entête que tu m'a recommandé.
    Mais l'attribut le message 'msg) ne passe toujours pas.
    Dans le code source c'est vide.

    Et le problème semble plus profond il ne trouve que "index.htm", sans injecter la valeur.
    J'ai des erreurs 404 sur mes liens, sauf sur "index" que je peux rappeler depuis elle même.
    Pour rentrer dans l'application j'appelle "localhost:8080

    C'est peut être la façon dont j'appelle le model, qui est la source du problème.
    Qui instancie l'objet "model"
    C'est bien le conteneur, c'est bien lui, ce n'est pas à moi de le faire.
    Je n'ai pas préciser le path du dossier "templates "

    Voici mon controller.
    J'ai peut être oublié d'initialiser un truc.
    Le problème avec Spring boot est quon devient vite paresseux, et que l'on compte sur sa magie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    package controller;
     
    import java.util.List;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
     
    import fr.xcomptadomain.Journal;
    import repository.JournalRepository;
     
    @Controller
    public class MainController {
    	@Autowired
    	private JournalRepository journalRepository;
     
    	@GetMapping(value={"/", "/index"})
    	public String index(Model model) {
     
    		model.addAttribute("msg", "Bonjour");
     
    		return "index";
    	}
     
    	@GetMapping("/journalList")
    	public String journalList(Model model) {
    		List<Journal> journaux = (List<Journal>) journalRepository.findAll();
     
    	System.out.println("Nb journaux : " + journaux.size());
     
    		for(Journal journal: journaux) {
    			System.out.println(journal);
    		}
     
    		model.addAttribute("journaux", journaux);
     
    		return "journalList";
    	}
     
    	@GetMapping("/journalDetail")
    	public String journalDetail(Model model) {
    		Journal journal = journalDao.findByCode("AC");
    		// journalRepository.count()
    		//Journal journal = new Journal("ac", "Achats");
     
    		model.addAttribute("journal", journal);
    		return "journalDetail";
    	}
     
    }
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    Citation Envoyé par CoderInTheDark Voir le message
    Et le problème semble plus profond il ne trouve que "index.htm"
    L'extension par défaut pour les templates est .html, donc il ne considérera pas index.htm comme un template. As-tu un ClassLoaderTemplateResolver?

    A+.

  5. #5
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut, en appellant :
    cela ne va pas te rediriger sur le dossier de SpringBoot.
    tu devrais plutot appeller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    localhost:8080/nom_de_ton_projet

    cela depend comment tu as configurer cela.

    Eric

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Citation Envoyé par jeffray03 Voir le message
    Salut, en appellant :
    cela ne va pas te rediriger sur le dossier de SpringBoot.
    tu devrais plutot appeller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    localhost:8080/nom_de_ton_projet

    cela depend comment tu as configurer cela.

    Eric
    Par forcément, s'il n'a pas configurer la valeur de server.servlet.context-path , il doit accéder directement à la racine localhost:8080/

    @CoderInTheDark
    peut-on voir la classe qui contient la méthode main, ton fichier applications.properties et un imprime écran de la hiérarchie de ton projet?

    A+.

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 111
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Re,



    L'extension par défaut pour les templates est .html, donc il ne considérera pas index.htm comme un template. As-tu un ClassLoaderTemplateResolver?

    A+.


    Non je n'en ai pas.
    Ce n'est pas fait par sprint tool suite ?
    Je dois faire une classe utiliraire avec une anotation @Configuration
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  8. #8
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 111
    Par défaut
    Est-ce que je peux passer par le fichier "application..properties" ?

    Aves vous des exemples ?

    C'est quoi le meilleur dans mon cas ?

    Je cherche sur google et stack, mais je ne trouve pas d'exemple complet
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/09/2016, 12h27
  2. Problème d'affiche sur ecrana avec résolution 1680x1050
    Par sylverspoon dans le forum Applets
    Réponses: 0
    Dernier message: 04/02/2010, 09h16
  3. Réponses: 0
    Dernier message: 28/10/2009, 21h29
  4. Problème d'affiche d'une list avec c:forEach
    Par lili2704 dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/03/2007, 17h49
  5. Problèmes d'affiche du header de mon JTable avec un Model
    Par Baptiste Wicht dans le forum Composants
    Réponses: 16
    Dernier message: 08/02/2006, 18h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo