3

i have a problem with Spring Boot Thymeleaf. I want to include a simple html-file in another html file with Thymeleaf.

Here my main.html file: In the middle of the codesnippet you can see the root-div, here i want to include the dashboard.html file.

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Admin-Area</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link href="/backend/webjars/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
    <link href="/backend/webjars/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <nav class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 fixed-top mainnav navbar-expand-xl">
        <a class="navbar-brand col-sm-3 col-md-2 mr-0" href="../dashboard/dashboard.html">B2C-Shop</a>
        <button type="button" class="navbar-toggler navbar-toggler-right">
            <span class="navbar-toggler-icon"></span>
        </button>
    </nav>
    <div class="container-fluid">
        <div class="row">
            <main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4">
                <div th:each="script: ${scripts}">
                    <div th:if="${script.endsWith('dashboard.html')}">
                        <div id="root" th:include="dashboard :: dashboard></div>
                    </div>
                </div>
            </main>
        </div>
    </div>

    <script src="/backend/webjars/es5-shim/4.5.9/es5-shim.min.js"></script>
    <script src="/backend/webjars/es6-shim/0.20.2/es6-shim.min.js"></script>
    <script src="/backend/webjars/jquery/3.3.1/jquery.min.js"></script>
    <script src="/backend/webjars/bootstrap/4.0.0/js/bootstrap.min.js"></script>
    <script src="/backend/webjars/modernizr/2.8.3/modernizr.min.js"></script>
    <div th:each="script: ${scripts}">
        <div th:if="${script.endsWith('.js')}">
            <script type="text/javascript" th:src="'/backend/js' + ${script}"></script>
        </div>
    </div>
</body>
</html>

And this is the dashboard.html file which i want to include in the main.html file.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
    <div th:fragment="dashboard">
        <h1>Welcome to B2C-Admin-Area</h1>
    </div>
</html>

This is my DashboardController.java which i declare the dashboarb/dashboard.html file The return methode "getTemplate()" references to backend folder in resources folder.

/**
     *
     * Render dash board
     *
     * @param model the attribute model
     * @return the template file name
     */
    @RequestMapping(value = "/backend/dashboard/dashboard.html", method = RequestMethod.GET)
    public String dashboard(final Model model)
    {
        String[] script = {"/dashboard/dashboard.html"};
        model.addAttribute(SCRIPT, script);
        return getTemplate();
    }

/**
     * Gets the template file name.
     *
     * @return the template file name
     */
    protected String getTemplate()
    {
        return "backend";
    }

My folder stucture looks like this:

enter image description here

Do you have any idea to include this file?

Thank you.

Regards MWC.

1 Answer 1

4

First arrange your html files as shown in the below structure: enter image description here

Then create fragment for import as : suppose you saved below code in breadcrumb file in template/common folder:

<section class="content-header" th:fragment="breadcrumbfragment">
    <ol class="breadcrumb">
        <li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>
        <li class="active">Next </li>
        <li class="active">Next to Next</li>
    </ol>
</section>

Now to import above fragment use following line:

<section class="content-header" th:replace="common/breadcrumb::breadcrumbfragment"></section>
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you, if have change the folder structure to /templates/dashboard/dashboard.html than its works.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.