2017-02-11 74 views
1

我使用百里香叶将头部/主要/页脚部分的模板分开。为了包括某些页面样式表和javascript(但不是在其他人)我使用的片段表达as explained here.百里香片段表达式

所以我head.html样子:

<!DOCTYPE html> 
<html> 
<head th:fragment="head(title,links,scripts)"> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"/> 
    <title th:replace="${title}">Title placeholder</title> 

    <!--/* Per-page placeholder for additional links */--> 
    <th:block th:replace="${links} ?: ~{}" /> 
    <th:block th:replace="${scripts} ?: ~{}" /> 
</head> 
<body> 
</body> 
</html> 

,这是在使用例如我的主页,的index.html如下:

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head th:replace="head :: head(~{::title},~{::link},~{::script})"> 
    <title th:text="#{label.pages.home.title}">Homepage</title> 
    <link rel="stylesheet" href="/assets/css/jumbotron.css"/> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
</head> 

<body> 
... 
</body> 
</html> 

这工作正常原样。脚本和链接标签出现在结果页面的标题中。不过偶尔我只想</body>之前,必须在身体(结束脚本。如果我在那个位置两件事情发生在结果页面把<script>....</script>

  • 脚本出现在头部
  • 的脚本出现第二次在其原始位置

如何防止thymeleaf从把脚本的头部?

回答

0

片段的表达有语法~{template :: selector}。您参考原始文件和语法缩减为~{:: selector}。选择器是XPath或CSS类似的表达式。为防止包含所有脚本,您应将范围缩小到head标记:~{:: head/script}