我正在使用thymeleaf将模板分割成头/主/页脚部分。为了在某些页面上包含样式表和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>
,则在结果页面中会发生两件事。
我怎样才能防止百里香将剧本放在头上?
答案 0 :(得分:0)
片段表达式具有语法~{template :: selector}
。您引用的原始文件和语法缩减为~{:: selector}
。 Selector是XPath或CSS之类的表达式。为防止包含所有脚本,您应将范围缩小到head
标记:~{:: head/script}
。