2017-08-28 69 views
2

我正在嘗試使用Thymeleaf渲染電子郵件模板,我希望將主題和正文放在同一個文件中,但是單獨渲染。我不想用春景,只是簡單的SpringTemplateEngine用Thymeleaf渲染片段內容

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org"> 
<!--/*@thymesVar id="user" type="com.myapp.user.User"*/--> 
<!--/*@thymesVar id="invitationId" type="java.util.UUID"*/--> 
<head> 
    <title th:fragment="subject">Hello <span th:text="${user.name}"/></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
</head> 
<body> 
<p> 
    Hello <span th:text="${user.name}"></span>,<br> 
    you've been invited to join MyApp. 
</p> 
<p> 
    Click on the following link to confirm your email and setup a password:<br> 
    <a th:href="@{https://myapp.com/accept-invitation(id=${invitationId})}">Accept invitation</a> 
</p> 
<p> 
    Best regards,<br/> 
    <em>The MyApp team</em> 
</p> 
</body> 
</html> 

有幾個問題與此

首先,我無法獲得Thymeleaf渲染<title>

String subject = templateEngine.process(
    templateFile, 
    ImmutableSet.of("subject"), 
    new Context(Locale.ENGLISH, contextVariables) 
); 

只有內容它呈現的文學只有Hello - 它看起來像開幕<title>標籤總是被刪除,並且片段在第一個標籤之後立即被修剪。

當我使整個模板,它返回

<!DOCTYPE html> 
<html> 
<head> 
    Hello <span>pepa</span></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
</head> 
<body> 
<p> 
    Hello <span>pepa</span>,<br> 
... 

使用在<title>下使輸出更好一點

<span th:text="${user.name}" th:remove="tag"></span> 

但開放標籤仍下落不明。

當我理論上能夠正確地呈現標題時,我仍然會將它封裝在一個HTML標記中 - 這顯然不能用作電子郵件主題。有沒有辦法只渲染片段的內容?

我真的很想在同一個模板中同時使用電子郵件主題和正文,例如我想在標題中做一些迭代以從列表生成它 - 我不想做任何字符串串聯,我想在模板中。

有什麼建議嗎?

回答

-1

如果你想只包括您的片段的內容,假設你的片段稱爲your_fragment.html,並放置在/資源/模板/片段你可以這樣做:

<head> 
    <title th:replace="fragments/your_fragment::your_fragment"/></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
</head> 

而your_fragment.html:

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head></head> 
<body> 
    <div th:fragment="your_fragment" th:remove="tag"> 
     Hello <span th:text="${user.name}" th:remove="tag"></span> 
    </div> 
</body> 
</html> 

這將使:

<head> 
    Hello username 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
</head> 
+0

對不起,但我不認爲你已經理解我的問題,因爲這根本不能幫助我 - 如果是這樣,我不知道如何。 –

+0

我以爲你只需要渲染標籤內的文字,上面的代碼就會渲染<title>你好用戶名 juanlumn

+0

是的,沒錯。但是我需要將它輸出的字符串用作電子郵件主題,我不能在主題中放置''標籤。我知道我可以去掉標籤,但是如果thymeleaf實際上可以呈現代碼片段的內容,而沒有包裝標籤,它會更好。 – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4319274062" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">相關問題</div> <ul class="relative_list"> <li> 1. <a href="http://hk.voidcc.com/question/p-afubirqf-s.html" target="_blank" title="SWF:渲染片段不渲染"> SWF:渲染片段不渲染 </a> </li> <li> 2. <a href="http://hk.voidcc.com/question/p-wvkgsliw-vp.html" target="_blank" title="formtastic渲染表單片段"> formtastic渲染表單片段 </a> </li> <li> 3. <a href="http://hk.voidcc.com/question/p-gmzhkxll-gz.html" target="_blank" title="CKEditor內容渲染定製"> CKEditor內容渲染定製 </a> </li> <li> 4. <a href="http://hk.voidcc.com/question/p-kmrvgbyx-qm.html" target="_blank" title="GraphZoomScrollPane不渲染內容"> GraphZoomScrollPane不渲染內容 </a> </li> <li> 5. <a href="http://hk.voidcc.com/question/p-tfihtrcn-r.html" target="_blank" title="使用ListView渲染段內的行?"> 使用ListView渲染段內的行? </a> </li> <li> 6. <a href="http://hk.voidcc.com/question/p-nqaxfonv-pd.html" target="_blank" title="Android Studio渲染片段問題"> Android Studio渲染片段問題 </a> </li> <li> 7. <a href="http://hk.voidcc.com/question/p-nlresxis-vb.html" target="_blank" title="地圖片段渲染錯誤"> 地圖片段渲染錯誤 </a> </li> <li> 8. <a href="http://hk.voidcc.com/question/p-wgihdxgs-ha.html" target="_blank" title="Thymeleaf渲染HTML中的錯誤"> Thymeleaf渲染HTML中的錯誤 </a> </li> <li> 9. <a href="http://hk.voidcc.com/question/p-mwxgiaiq-ud.html" target="_blank" title="在Thymeleaf中擴展片段"> 在Thymeleaf中擴展片段 </a> </li> <li> 10. <a href="http://hk.voidcc.com/question/p-peglxtkj-qb.html" target="_blank" title="Umbraco在OnPublish中獲取渲染內容"> Umbraco在OnPublish中獲取渲染內容 </a> </li> <li> 11. <a href="http://hk.voidcc.com/question/p-zexbmlrf-nw.html" target="_blank" title="c:forEach不渲染豐富內容:dataTable"> c:forEach不渲染豐富內容:dataTable </a> </li> <li> 12. <a href="http://hk.voidcc.com/question/p-dagwgqrk-wa.html" target="_blank" title="放大後爲UIScrollView渲染內容"> 放大後爲UIScrollView渲染內容 </a> </li> <li> 13. <a href="http://hk.voidcc.com/question/p-szfkkull-rd.html" target="_blank" title="谷歌的PageSpeed - 渲染阻擋內容"> 谷歌的PageSpeed - 渲染阻擋內容 </a> </li> <li> 14. <a href="http://hk.voidcc.com/question/p-otmxvako-mr.html" target="_blank" title="gsp模板中的渲染內容"> gsp模板中的渲染內容 </a> </li> <li> 15. <a href="http://hk.voidcc.com/question/p-krrhnbdf-cs.html" target="_blank" title="根據javascript變量渲染jsp內容"> 根據javascript變量渲染jsp內容 </a> </li> <li> 16. <a href="http://hk.voidcc.com/question/p-vesowvnd-ex.html" target="_blank" title="Rails 3渲染二進制內容"> Rails 3渲染二進制內容 </a> </li> <li> 17. <a href="http://hk.voidcc.com/question/p-mhujqimf-tz.html" target="_blank" title="React JS - React Router - 分別渲染內容"> React JS - React Router - 分別渲染內容 </a> </li> <li> 18. <a href="http://hk.voidcc.com/question/p-bnukxzam-bs.html" target="_blank" title="在標籤內容不渲染"> 在標籤內容不渲染 </a> </li> <li> 19. <a href="http://hk.voidcc.com/question/p-uuqglsdj-rb.html" target="_blank" title="將內容綁定到動態渲染"> 將內容綁定到動態渲染 </a> </li> <li> 20. <a href="http://hk.voidcc.com/question/p-qmzbemrs-tu.html" target="_blank" title="css內容字符渲染奇怪"> css內容字符渲染奇怪 </a> </li> <li> 21. <a href="http://hk.voidcc.com/question/p-byqfbvsl-uv.html" target="_blank" title="Laravel CSRF令牌AJAX渲染的內容"> Laravel CSRF令牌AJAX渲染的內容 </a> </li> <li> 22. <a href="http://hk.voidcc.com/question/p-avtenwid-mx.html" target="_blank" title="渲染內Webix"> 渲染內Webix </a> </li> <li> 23. <a href="http://hk.voidcc.com/question/p-dqnaekkz-oo.html" target="_blank" title="如何讓NLog解析文件內容渲染器的內容?"> 如何讓NLog解析文件內容渲染器的內容? </a> </li> <li> 24. <a href="http://hk.voidcc.com/question/p-apbnnghm-cz.html" target="_blank" title="Xamarin內容查看渲染隱藏內容"> Xamarin內容查看渲染隱藏內容 </a> </li> <li> 25. <a href="http://hk.voidcc.com/question/p-fpbediwu-cm.html" target="_blank" title="如何使用ng-click來渲染塊內的內容?"> 如何使用ng-click來渲染塊內的內容? </a> </li> <li> 26. <a href="http://hk.voidcc.com/question/p-qmufseoo-om.html" target="_blank" title="JS字段渲染返回標準字段渲染"> JS字段渲染返回標準字段渲染 </a> </li> <li> 27. <a href="http://hk.voidcc.com/question/p-wofjmzmt-d.html" target="_blank" title="刷新片段的內容"> 刷新片段的內容 </a> </li> <li> 28. <a href="http://hk.voidcc.com/question/p-wixnwwfl-oq.html" target="_blank" title="thymeleaf - 如何修復標題片段重疊的內容和側邊欄菜單?"> thymeleaf - 如何修復標題片段重疊的內容和側邊欄菜單? </a> </li> <li> 29. <a href="http://hk.voidcc.com/question/p-nppqenue-sr.html" target="_blank" title="從片段中替換片段導致片段內容重疊"> 從片段中替換片段導致片段內容重疊 </a> </li> <li> 30. <a href="http://hk.voidcc.com/question/p-theysams-cv.html" target="_blank" title="使用網址片段播放框架1.x渲染"> 使用網址片段播放框架1.x渲染 </a> </li> </ul> </div> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3534119089"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img2.voidcc.com/voidso/script/side.js?t=1652515421930"></script> <script type="text/javascript" src="http://img2.voidcc.com/voidso/plugin/highlight/highlight.pack.js"></script> <link href="http://img2.voidcc.com/voidso/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- VOIDCC问答侧边栏广告 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3862022848" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> 最新問題 </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://hk.voidcc.com/question/p-eubghacn-vh.html" target="_blank" title="在Windows10上安裝OpenCV3 for Python 3.4"> 在Windows10上安裝OpenCV3 for Python 3.4 </a> </li> <li class="side_article_list_item"> 2. <a href="http://hk.voidcc.com/question/p-ohpscbrh-ud.html" target="_blank" title="如何創建列描述(CD)文件Catboost"> 如何創建列描述(CD)文件Catboost </a> </li> <li class="side_article_list_item"> 3. <a href="http://hk.voidcc.com/question/p-bajyfghc-ue.html" target="_blank" title="如何打印二叉樹?"> 如何打印二叉樹? </a> </li> <li class="side_article_list_item"> 4. <a href="http://hk.voidcc.com/question/p-mypqimgo-ud.html" target="_blank" title="從數列與百分比的餅圖創建爲標籤"> 從數列與百分比的餅圖創建爲標籤 </a> </li> <li class="side_article_list_item"> 5. <a href="http://hk.voidcc.com/question/p-knpvxuvn-tz.html" target="_blank" title="爲什麼jQuery懸停效果不起作用?"> 爲什麼jQuery懸停效果不起作用? </a> </li> <li class="side_article_list_item"> 6. <a href="http://hk.voidcc.com/question/p-xvbaiygo-ue.html" target="_blank" title="HTTP狀態500 - 爲的servlet MVC-調度Servlet.init()拋出異常"> HTTP狀態500 - 爲的servlet MVC-調度Servlet.init()拋出異常 </a> </li> <li class="side_article_list_item"> 7. <a href="http://hk.voidcc.com/question/p-yrbnnicn-vq.html" target="_blank" title="的Javascript清單減速機的CouchDB"> 的Javascript清單減速機的CouchDB </a> </li> <li class="side_article_list_item"> 8. <a href="http://hk.voidcc.com/question/p-dmjmkqba-tb.html" target="_blank" title="如何重新排序Ruby中的XML文件"> 如何重新排序Ruby中的XML文件 </a> </li> <li class="side_article_list_item"> 9. <a href="http://hk.voidcc.com/question/p-wdqlgkca-va.html" target="_blank" title="爲什麼我沒有獲得領域的價值而不是領域本身?"> 爲什麼我沒有獲得領域的價值而不是領域本身? </a> </li> <li class="side_article_list_item"> 10. <a href="http://hk.voidcc.com/question/p-wcpiwcpa-ss.html" target="_blank" title="html如何通過檢查元素設置圖像不工作"> html如何通過檢查元素設置圖像不工作 </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> 相關問題</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://hk.voidcc.com/question/p-afubirqf-s.html" target="_blank" title="SWF:渲染片段不渲染"> SWF:渲染片段不渲染 </a> </li> <li class="side_article_list_item"> 2. <a href="http://hk.voidcc.com/question/p-wvkgsliw-vp.html" target="_blank" title="formtastic渲染表單片段"> formtastic渲染表單片段 </a> </li> <li class="side_article_list_item"> 3. <a href="http://hk.voidcc.com/question/p-gmzhkxll-gz.html" target="_blank" title="CKEditor內容渲染定製"> CKEditor內容渲染定製 </a> </li> <li class="side_article_list_item"> 4. <a href="http://hk.voidcc.com/question/p-kmrvgbyx-qm.html" target="_blank" title="GraphZoomScrollPane不渲染內容"> GraphZoomScrollPane不渲染內容 </a> </li> <li class="side_article_list_item"> 5. <a href="http://hk.voidcc.com/question/p-tfihtrcn-r.html" target="_blank" title="使用ListView渲染段內的行?"> 使用ListView渲染段內的行? </a> </li> <li class="side_article_list_item"> 6. <a href="http://hk.voidcc.com/question/p-nqaxfonv-pd.html" target="_blank" title="Android Studio渲染片段問題"> Android Studio渲染片段問題 </a> </li> <li class="side_article_list_item"> 7. <a href="http://hk.voidcc.com/question/p-nlresxis-vb.html" target="_blank" title="地圖片段渲染錯誤"> 地圖片段渲染錯誤 </a> </li> <li class="side_article_list_item"> 8. <a href="http://hk.voidcc.com/question/p-wgihdxgs-ha.html" target="_blank" title="Thymeleaf渲染HTML中的錯誤"> Thymeleaf渲染HTML中的錯誤 </a> </li> <li class="side_article_list_item"> 9. <a href="http://hk.voidcc.com/question/p-mwxgiaiq-ud.html" target="_blank" title="在Thymeleaf中擴展片段"> 在Thymeleaf中擴展片段 </a> </li> <li class="side_article_list_item"> 10. <a href="http://hk.voidcc.com/question/p-peglxtkj-qb.html" target="_blank" title="Umbraco在OnPublish中獲取渲染內容"> Umbraco在OnPublish中獲取渲染內容 </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://hk.voidcc.com/contact">聯系我們</a></li> <li>© 2020 HK.VOIDCC.COM</li> <li><a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">沪ICP备13005482号-13</a></li> <li><script type="text/javascript" src="https://s9.cnzz.com/z_stat.php?id=1280098168&web_id=1280098168"></script></li> <li><a href="http://cn.voidcc.com/" target="_blank" title="程序问答园区">简体中文</a></li> <li><a href="http://hk.voidcc.com/" target="_blank" title="程序問答園區">繁體中文</a></li> <li><a href="http://ru.voidcc.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.voidcc.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.voidcc.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.voidcc.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.voidcc.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.voidcc.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.voidcc.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.voidcc.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.voidcc.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.voidcc.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.voidcc.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-77509369-5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-77509369-5'); </script> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?67d4731349f0b00136755b80364ce381"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>