¿Cómo usar el espacio de nombres de Thymeleaf para incluir un encabezado y un pie de página de una página sin usar ningún templateresolver?

StackOverflow https://stackoverflow.com//questions/21067929

  •  26-12-2019
  •  | 
  •  

Pregunta

Tengo una página de inicio de sesión en la que he declarado la inclusión de plantillas comunes a continuación

"cabeza" es el nombre del fragmento para el atributo de encabezado en common.html e incluye la inclusión de todos los archivos JS y CSS comunes.

Cuando acceda a la URL, veo que ninguno de estos CSS se está cargando en la página.Para ser anotado aquí, no estoy usando ninguna clases de templateresover o clases de motor, es puramente estática.

¿Puede alguien ayudarme con esto?

Aquí está el login.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:th="http://www.thymeleaf.org">
<head>
<meta name="loginPage" />
<meta th:remove="tag" th:include="../fragments/common :: [//head]"/>

</head>
<body  class="claro">
<div></div>
        <br />
          <div class="grid">
            <div class="col-1-1" style="text-align: center; margin: 0 auto;">
                <form class="form" t">
                    <fieldset>
                        <legend>Please login</legend>
                        <div class="col-1-1">
                            <div class="label">
                                User Name:
                            </div>
                            <div class="input">
                                <input data-dojo-type="dijit/form/TextBox" id="user_name" length="35" required="true" />
                            </div>
                        </div>
                        <div class="col-1-1">
                           <div class="label"> 
                                Password:
                           </div> 
                           <div class="input">
                            <input  id="password" name="password" data-dojo-type="dijit/form/TextBox"
                                type="password" required="required" maxlength="100" />
                           </div>
                         </div>
                           <div class="col-1-1">
                                <div class="module">
                                    <input type="submit" data-dojo-type="dijit.form.Button"
                                        id="save_msg_button" intermediateChanges="false"
                                        label="Login" iconClass="dijitNoIcon"></input>
                                </div>
                           </div>

                    </fieldset>
                </form>
            </div>
         </div>
</body>
</html>

y aquí está el common.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head th:fragment="head">
<meta charset="utf-8" />
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>  
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>  
<![endif]-->

<!-- stylesheets -->
<link rel="stylesheet" th:href="@{/css/grid.css}" href=""
    type="text/css" />
<link rel="stylesheet" th:href="@{/css/app.css" href=""
    type="text/css" />
<link rel="stylesheet" th:href="@{/css/app.css" href=""
    type="text/css" />
<link rel="stylesheet" href="../../../cdn/js/dojo/dijit/themes/claro/document.css"
    type="text/css" />
<link rel="stylesheet" href="../../../cdn/js/dojo/dijit/themes/claro/claro.css"
    type="text/css" />
<link rel="stylesheet" href="../../../cdn/js/dojo/dijit/themes/claro/Gridx.css"
    type="text/css" />
<link rel="stylesheet" href="../../../cdn/js/dojo/dijit/themes/claro/Gridx_rtl.css"
    type="text/css" />
<link rel="stylesheet" href="../../../cdn/js/dojo/dijit/themes/claro/ExpandoPane.css"
    type="text/css" />



</head>
<body>
    <div>
        <span>Body goes here</span>
    </div>
</body>
</html>

¿Fue útil?

Solución

Si entiendo correctamente, desea proteger estáticamente la plantilla con fragmentos.

Cuando se usa una plantilla de Thymeleaf como prototipo estático, no verá los fragmentos que incluye el uso de TH: Include / TH: Reemplazar.

En mi opinión, tienes dos opciones:

  1. Crear un código de prototipos estático, que se eliminará en el tiempo de ejecución como en este archivo: https://github.com/thymeleaf/thymeleafexamples-layouts/blob/master/src/main/webapp/web-inf/views/ Inicio / Homenotsignedin.html

  2. Use Thymol: una biblioteca de JavaScript no oficial que es una implementación de la funcionalidad de inclusión de fragmentos estándar de Thymeleaf, proporcionando soporte estático para algunos atributos de Thymeleaf como TH: Incluya o TH: Reemplace. Consulte: http://sourceforge.net/u/jjbenson/wiki/thymol/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top