Spring MVC,Tiles2,ThymeLeaf和Natural Templating

时间:2015-05-12 10:25:25

标签: java spring-mvc thymeleaf apache-tiles tiles2

如何在使用Tiles2作为模板引擎的同时有效地使用ThymeLeaf自然模板。我有一个简单的瓷砖定义:

<tiles-definitions>
  <definition name="/**;layout:*" template="templates/{2}_layout">
    <put-attribute name="header" value="templates/header"/>
    <put-attribute name="content" value="/{1}"/>
    <put-attribute name="footer" value="templates/footer"/>
  </definition>
  ...
</tiles-definitions>

和我的布局

<html lang="pl" xmlns="http://www.w3.org/1999/xhtml"
  xmlns:th="http://www.thymeleaf.org"
  xmlns:sec="http://www.springframework.org/security/tags"
  xmlns:tiles="http://www.thymeleaf.org">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <link rel="stylesheet" type="text/css" th:href="@{~/css/bootstrap.min.css}" href="../../../css/bootstrap.min.css"/>
  ... and many others
</head>
<body>
  <div class="top-header" tiles:include="header">Header to include</div>
  <div class="container-main" tiles:include="content">Content to include</div>
  <div tiles:include="footer">Footer to include</div>
</body>

和一个简单的content.html模板

<div id="main" class="panel panel-main">
   <div id="contents" class="panel-body">
       bla bla bla
   </div>
</div>

我遇到的问题是: 如果我尝试在本地检查content.html,那么它看起来应该不合适,因为我没有定义<html><head>有CSS和JS定义。

如果我在运行时添加了<html><head>标签,那么在结果页面上有很多html定义(来自标题/内容/页脚模板)!

对我来说一个完美的解决方案可能是:我想用<html><head>标签定义content.html,充分利用自然模板和语法检查,然后以某种方式包含此文件但没有这些标签(仅限正文)或div)有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用

<!-- /* --> 

<!--*/-->. 

这些评论标记中的每个标记在运行时都会被忽略(它们不会显示在实际页面中)。

<!--/*-->
<html> 
    <head> 
      <title>Test</title> 
    </head> 
    <body>
<!--*/-->
        <div>...</div>
<!--/*-->
    <body> 
</html>
<!--*/-->