[英]Get a Thymeleaf template fragment in Java
我有一個模板:
<div th:fragment="subject">
[[${var1}]] - blabla
</div>
<div th:fragment="body">
titi
</div>
在 Java 中:
我只想檢索主題片段並將其放入變量中。
String subject = templateEngine.process(template.getPath()+" :: subject", context);
但我得到了錯誤:
java.io.FileNotFoundException: ClassLoader resource "mail/templates/mail_depot.html :: subject" could not be resolved
我可以成功調用:
String subject = templateEngine.process(template.getPath(), context);
但是當我添加“ :: subject”以僅檢索主題片段時出現錯誤。
TemplateEngine
有不同版本的process()
方法。 你需要的是:
public final String process(String template, Set<String> templateSelectors, IContext context)
此方法采用一組字符串,其中每個字符串可以是片段的名稱。
例如:
Set<String> selectors = new HashSet<>();
selectors.add("subject");
String subject = templateEngine.process(template.getPath(), selectors, context);
在您的情況下,這將返回一個包含以下內容的字符串:
<div>
??? - blabla
</div>
但是隨着???
替換為[[${var1}]]
解析為的任何值。
有關更多詳細信息,請參閱TemplateEngine
JavaDoc 。
更新
后續相關問題:如果要直接訪問fragment的內容,不包括封閉的HTML標簽,可以使用如下:
<th:block th:fragment="subject">
foo
</th:block>
<div th:fragment="body">
bar
</div>
Thymeleaf <th:block>
標簽會自行移除。
如果您的片段中有嵌套標簽,那么如果您使用<th:block>
,這些標簽將不會被刪除。
否則,請使用 HTML 解析器,例如 Jsoup:
Jsoup.parse(yourHtmlString).text()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.