我有一個模板:
<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”以僅檢索主題片段時出現錯誤。
uj5u.com熱心網友回復:
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}]]決議。
有關更多詳細資訊,請參閱TemplateEngineJavaDoc。
更新
后續相關問題:如果要直接訪問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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479451.html
下一篇:如何拆分兩個json字串
