发生模板解析错误。 (Spring Boot + Thymeleaf)具有布局和静态功能

时间:2019-05-22 11:14:24

标签: spring spring-boot templates layout thymeleaf

我尝试加载localhost:8080/时遇到解析错误。

我在模板中找不到任何错误,那么为什么会有这个错误?

静态文件包含文件夹css和带有jQuery,js和bootstrap的图片

  

错误:此应用程序没有/ error的显式映射,因此您将其视为备用。
  2019年5月22日星期三13:02:18
  发生意外错误(类型=内部服务器错误,状态= 500)。
  模板解析期间发生错误(模板:“类路径资源[templates / RHAjouterDeve.html]”)

代码布局index.html:

<!DOCTYPE html>
<html lang="fr" xmlns:th="http://www.thymeleaf.org" 
                xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> 
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial- scale=1">
        <link th:href="/webjars/bootstrap/4.3.1/css/bootstrap.css" rel="stylesheet" /> 
        <link rel="icon" th:href="(images/favicon.ico)" type="image/ico" />
        <title>Projet Pfa Spring BOOT </title>
        <link rel="stylesheet" th:href="{build/css/bootstrap.min.css}" />
    </head>
    <body class="nav-md">
        <div class="container body">
            <div class="main_container">
                <div class="col-md-3 left_col">
                    <div class="left_col scroll-view">
                       <div class="navbar nav_title" style="border: 0;">

                       </div>
                       <div class="clearfix"></div>

                       <div class="profile clearfix">
                          <div class="profile_pic">
                          </div>
                       </div>

            <br />


            <div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
              <div class="menu_section">
              <br/>
               <br/>
                <br/>
                <br/>
                <br/>
                <h3>Menu</h3>
                <!-- <ul class="nav side-menu"> -->
                  <!-- <li><a><i class="fa fa-home"></i> Formation <span class="fa fa-chevron-down"></span></a> -->
                    <!-- <ul class="nav child_menu"> -->
                      <!-- <li><a href="Demande_Formation.html">Demande Formation</a></li> -->
                       <!-- <li><a href="Demande_Formation.html">Formation Traité</a></li> -->
                      <!-- <li><a href="Formation_Accepter.html">Formation Accepter</a></li> -->
                      <!-- <li><a href="Formation_En_Cours.html">Formation En Cours</a></li> -->
                      <!-- <li><a href="Formation_Finis.html">Formation Finis</a></li> -->
                    <!-- </ul> -->
                  <!-- </li> -->

                  <!-- <ul class="nav side-menu"> -->
                  <!-- <li><a><i class="fa fa-home"></i> Devellopeur <span class="fa fa-chevron-down"></span></a> -->
                    <!-- <ul class="nav child_menu"> -->

                       <!-- <li><a href="Devellopeur.html">La Liste Devellopeur</a></li> -->

                    <!-- </ul> -->
                  <!-- </li> -->

             <!--     </ul>-->
              </div>
              </div>


          </div>
        </div>

        <!-- top navigation -->
        <div class="top_nav">
          <div class="nav_menu">
            <nav>
              <div class="nav toggle">
                <a id="menu_toggle"><i class="fa fa-bars"></i></a>
              </div>

              <ul class="nav navbar-nav navbar-right">
                <li class="">
                  <a href="javascript:;" class="user-profile dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
                    <img th:src="(images/img.jpg)" alt="">



                    <span class=" fa fa-angle-down"></span>
                  </a>
                  <ul class="dropdown-menu dropdown-usermenu pull-right">

                    <li>

                    </li>

                    <li><a href="login.html"><i class="fa fa-sign-out pull-right"></i> Log Out</a></li>
                  </ul>
                </li>

                <li role="presentation" class="dropdown">

                  <ul id="menu1" class="dropdown-menu list-unstyled msg_list" role="menu">
                    <li>
                      <a>
                        <span class="image"><img th:src="(images/img.jpg)" alt="Profile Image" /></span>


                      </a>
                    </li>
                    <li>
                      <a>
                        <span class="image"><img src="images/img.jpg" alt="Profile Image" /></span>


                      </a>
                    </li>
                    <li>
                      <a>



                      </a>
                    </li>
                    <li>
                      <a>



                      </a>
                    </li>
                    <li>
                      <div class="text-center">

                      </div>
                    </li>
                  </ul>
                </li>
              </ul>
            </nav>
          </div>
        </div>
        <!-- /top navigation -->

        <!-- page content -->
        <div class="right_col" role="main">

          <!-- <div class="row tile_count"> -->
            <!-- <div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count"> -->
              <!-- <span class="count_top"><i class="fa fa-user"></i> Formation en cours</span> -->
              <!-- <div class="count">2500</div> -->

            <!-- </div> -->
            <!-- <div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count"> -->
              <!-- <span class="count_top"><i class="fa fa-user"></i> Formation Traité </span> -->
              <!-- <div class="count">123.50</div> -->
              <!-- <span class="count_bottom"><i class="green"> </i></span> -->
            <!-- </div> -->
            <!-- <div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count"> -->
              <!-- <span class="count_top"><i class="fa fa-user"></i> Total Finis</span> -->
              <!-- <div class="count green">2,500</div> -->
              <!-- <span class="count_bottom"><i class="green"></i> </i></span> -->
            <!-- </div> -->
            <!-- <div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count"> -->
              <!-- <span class="count_top"><i class="fa fa-user"></i> Total Formateur</span> -->
              <!-- <div class="count">4,567</div> -->
              <!-- <span class="count_bottom"><i class="red"></i> </i> </span> -->
            <!-- </div> -->
            <!-- <div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count"> -->
              <!-- <span class="count_top"><i class="fa fa-user"></i> Total Employé</span> -->
              <!-- <div class="count">2,315</div> -->
              <!-- <span class="count_bottom"><i class="green"> </span> -->
            <!-- </div> -->
            <!-- <div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count"> -->
              <!-- <span class="count_top"><i class="fa fa-user"></i> Total Chef Projet</span> -->
              <!-- <div class="count">7,325</div> -->
              <!-- <span class="count_bottom"><i class="green"> </span> -->
            <!-- </div> -->
          <!-- </div> -->
                <section layout:fragment="content" class="container"> 

  </section>         






                <!-- start of weather widget -->

                <!-- end of weather widget -->
              </div>
            </div>
          </div>

        <!-- /page content -->

        <!-- footer content -->

        <!-- /footer content -->




    <!-- Custom Theme Scripts -->
    <script src="build/js/custom.min.js"></script>
    <script src="/webjars/jquery/3.4.1/jquery.js"></script> <script  src="/webjars/bootstrap/4.3.1/js/bootstrap.js"> 

</script> 

  </body>
</html>
</strike>


 Fichier rhajouterdeve.html
<strike><!DOCTYPE html>
<html xmlns:th="http://thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="layout/default">

<body>
 <section layout:fragment="content"> 

hello 
  </section>

 </body>
 </html>
</strike>

le code du controller :
package com.projetpfa.gestionrh.gestionrh.controllers;



import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;



@Controller
@RequestMapping("/Devellopeur")
public class DeveControllers {
    //@Autowired
    //DeveService dvserv;

    @GetMapping("/")
    public String AllDeve( )
    {

        return"RHAjouterDeve";
    }

}

mon fichier pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.projet.pfa</groupId>
    <artifactId>projetpfa</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>projetpfa</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
    </dependency>
    <dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.4.1</version>
</dependency>


<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>bootstrap</artifactId>
    <version>4.3.1</version>
</dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

日志错误:

  

____ org.thymeleaf.exceptions.TemplateInputException:模板解析期间发生错误(模板:“类路径资源[templates / RHAjouterDeve.html]”)
  在org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241)〜[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]           在org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100)〜[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]           在org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666)〜[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]           在org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098)上[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]           在org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072)上[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]           在org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362)[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]           在org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189)上[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]           在org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1370)[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]           在org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1116)上[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]           在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055)上[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]           在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)上[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]           在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]           在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]           在javax.servlet.http.HttpServlet.service(HttpServlet.java:634)[tomcat-embed-core-9.0.17.jar:9.0.17]           在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)上[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]           在javax.servlet.http.HttpServlet.service(HttpServlet.java:741)[tomcat-embed-core-9.0.17.jar:9.0.17]           在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)[tomcat-embed-core-9.0.17.jar:9.0.17]           在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)[tomcat-embed-core-9.0.17.jar:9.0.17] _ __ _ _    有一个Spring Boot来提供图像。我的模型包含在ImageController.java中。 ImageService包含findPage方法。

运行Spring Boot应用程序时出现错误。  我想看我模板DASHBOARD来开始我的项目 localhost:8585 / Devellopeur如何找到带有静态文件和布局视图且没有错误的模板,

1 个答案:

答案 0 :(得分:0)

首先,由于没有正确的控制器,您无法访问localhost:8080 /。您可以访问SimpleResponse

package com.projetpfa.gestionrh.gestionrh.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/Devellopeur")
public class DeveControllers {
//@Autowired
//DeveService dvserv;

@GetMapping("/")
public String AllDeve( )
{
    return"RHAjouterDeve";
}
}

为了访问http://localhost:8090/Devellopeur/而没有百里香素解析错误,您必须创建在rhajouterdeve.html中声明的网页default。通常,此文件(default.html)用于在所有Thymeleaf模板上重用页眉和页脚。

<html xmlns:th="http://thymeleaf.org"
 xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
 layout:decorator="layout/default">

在模板包中创建它,并声明如下:

<html xmlns:th="http://thymeleaf.org"
 xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
 layout:decorator="default">

最后,您应该删除<strike>中的rhajouterdeve.html

这是您可以使用的默认页面的示例。

<!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">
    <title>Title</title>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

</head>
<body>
<header>
    <div class="container">
        <nav class="navbar navbar-default" role="navigation">

            <div class="navbar-header">
                <a class="navbar-brand" href="#">Jeutroll</a>
            </div>

            <div>
                <ul class="nav navbar-nav">
                    <li class="active"><a th:href="@{/index}">Home</a></li>
                </ul>
            </div>

        </nav>
    </div>
</header>
<section layout:fragment="content"></section>
<footer>
    <div class="navabar-fixed-bottom">
        <small>adress</small>
    </div>
</footer>
</body>
</html>