2017-08-28 1 views
2

Ich versuche, E-Mail-Vorlagen mit Thymeleaf gerendert zu haben und ich möchte das Thema und den Körper in der gleichen Datei haben, aber separat gerendert werden. Ich möchte keine Frühlingsansicht verwenden, einfach nur SpringTemplateEngine.Render Fragment Inhalt mit 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> 

Es gibt mehrere Probleme mit diesem

Erstens bin ich nicht in der Lage zu bekommen machen Thymeleaf nur Inhalte von <title>

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

es literarisch macht nur Hello - es sieht aus wie die Öffnung <title> Das Tag wird immer entfernt und das Fragment wird direkt nach dem ersten Tag getrimmt.

Und wenn ich die ganze Vorlage machen, gibt es

<!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> 
... 

die folgende Verwendung in der <title> macht die Ausgabe ein bisschen schöner

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

aber das Starttag noch fehlt.

Wenn es mir theoretisch gelingt, den Titel korrekt zu rendern, würde ich ihn immer noch in ein HTML-Tag einschließen - was natürlich nicht als E-Mail-Thema verwendet werden kann. Gibt es eine Möglichkeit, nur den Inhalt des Fragments zu rendern?

Ich würde wirklich gerne die E-Mail Betreff und Text in der gleichen Vorlage für Fälle haben, wenn ich zum Beispiel eine Iteration im Titel tun möchte, um es aus einer Liste zu generieren - ich möchte keine Zeichenfolge tun Verkettungen, ich möchte es in der Vorlage haben.

Irgendwelche Vorschläge bitte?

Antwort

-1

Wenn Sie nur den Inhalt des Fragments schließen, vorausgesetzt, dass Ihr Fragmentyour_fragment.html genannt wird und unter /resources/templates/Fragmente platziert Sie tun können:

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

und 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> 

Dies machen:

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

Entschuldigung, aber ich glaube nicht, dass Sie meine Frage verstanden haben, denn das hilft mir überhaupt nicht - und wenn, dann sehe ich nicht wie. –

+0

Ich dachte, dass Sie nur Text innerhalb des Tags rendern müssen, der obige Code wird <title> Hello Benutzername juanlumn

+0

Ja, das ist richtig. Aber ich brauche die Zeichenfolge, die es ausgibt, als E-Mail-Betreff, und ich kann keine "" -Tags in das Thema einfügen. Ich weiß, dass ich das Tag entfernen kann, aber es wäre schöner, wenn thymeleaf tatsächlich den Inhalt des Snippets ohne das Wrapper-Tag rendern könnte. – <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">Verwandte Themen</div> <ul class="relative_list"> <li> 1. <a href="http://de.voidcc.com/question/p-tekbylcp-my.html" target="_blank" title="Thymeleaf render auf Fragmenten"> Thymeleaf render auf Fragmenten </a> </li> <li> 2. <a href="http://de.voidcc.com/question/p-gvyrfzhg-ke.html" target="_blank" title="Thymeleaf Fragment Logik"> Thymeleaf Fragment Logik </a> </li> <li> 3. <a href="http://de.voidcc.com/question/p-kkdifnrk-om.html" target="_blank" title="Thymeleaf ignorieren Fragment nicht gefunden"> Thymeleaf ignorieren Fragment nicht gefunden </a> </li> <li> 4. <a href="http://de.voidcc.com/question/p-rmwjgzka-mm.html" target="_blank" title="Thymeleaf Löwenzahn Datatable mit zusätzlichen Spalten auf Seite render"> Thymeleaf Löwenzahn Datatable mit zusätzlichen Spalten auf Seite render </a> </li> <li> 5. <a href="http://de.voidcc.com/question/p-vkrmgril-gd.html" target="_blank" title="ThymeLeaf Fragment ausgeführt auf false th: wenn"> ThymeLeaf Fragment ausgeführt auf false th: wenn </a> </li> <li> 6. <a href="http://de.voidcc.com/question/p-klrgnzrw-ev.html" target="_blank" title="Referenzobjekt, das an Thymeleaf-Fragment übergeben wurde"> Referenzobjekt, das an Thymeleaf-Fragment übergeben wurde </a> </li> <li> 7. <a href="http://de.voidcc.com/question/p-byencrig-kd.html" target="_blank" title="Wie Parameter an Thymeleaf Ajax Fragment übergeben"> Wie Parameter an Thymeleaf Ajax Fragment übergeben </a> </li> <li> 8. <a href="http://de.voidcc.com/question/p-afxfhswn-ec.html" target="_blank" title="render PHP-Inhalt in Abschnitt"> render PHP-Inhalt in Abschnitt </a> </li> <li> 9. <a href="http://de.voidcc.com/question/p-obeeciic-ds.html" target="_blank" title="Fragment Inhalt wird abgeschnitten"> Fragment Inhalt wird abgeschnitten </a> </li> <li> 10. <a href="http://de.voidcc.com/question/p-rcrxvity-hu.html" target="_blank" title="ImageButtons hat Render kein Fragment Karte über"> ImageButtons hat Render kein Fragment Karte über </a> </li> <li> 11. <a href="http://de.voidcc.com/question/p-vbgklpzk-ga.html" target="_blank" title="Spring Boot Thymeleaf statischer Inhalt lädt nicht"> Spring Boot Thymeleaf statischer Inhalt lädt nicht </a> </li> <li> 12. <a href="http://de.voidcc.com/question/p-aazqiphd-ea.html" target="_blank" title="thymeleaf - Wie man Header-Fragment-überlappenden Inhalt und Sidebar-Menü zu beheben?"> thymeleaf - Wie man Header-Fragment-überlappenden Inhalt und Sidebar-Menü zu beheben? </a> </li> <li> 13. <a href="http://de.voidcc.com/question/p-ktcwvjfe-eb.html" target="_blank" title="Fragment Inhalt wird überlagert Toolbar"> Fragment Inhalt wird überlagert Toolbar </a> </li> <li> 14. <a href="http://de.voidcc.com/question/p-qkgokfso-nk.html" target="_blank" title="Android BottomNavigationVIEW Overlap Fragment Inhalt"> Android BottomNavigationVIEW Overlap Fragment Inhalt </a> </li> <li> 15. <a href="http://de.voidcc.com/question/p-hwcfosno-nn.html" target="_blank" title="Render Kind Inhalt in Eltern-Vorlage"> Render Kind Inhalt in Eltern-Vorlage </a> </li> <li> 16. <a href="http://de.voidcc.com/question/p-askxajjr-nb.html" target="_blank" title="Wie ein Fragment zu einem Nachrichtenausdruck in Thymeleaf übergeben"> Wie ein Fragment zu einem Nachrichtenausdruck in Thymeleaf übergeben </a> </li> <li> 17. <a href="http://de.voidcc.com/question/p-fyqyztiv-bn.html" target="_blank" title="Tabellenlayout: behoben - IE8 Delay Render Problem mit dynamischem Inhalt"> Tabellenlayout: behoben - IE8 Delay Render Problem mit dynamischem Inhalt </a> </li> <li> 18. <a href="http://de.voidcc.com/question/p-zeennzwe-nw.html" target="_blank" title="Thymeleaf Seitenlayout gibt"> Thymeleaf Seitenlayout gibt </a> </li> <li> 19. <a href="http://de.voidcc.com/question/p-oloczsrs-nr.html" target="_blank" title="Verlängerung Fragmente in Thymeleaf"> Verlängerung Fragmente in Thymeleaf </a> </li> <li> 20. <a href="http://de.voidcc.com/question/p-zcgalkvp-nh.html" target="_blank" title="Thymeleaf mit Ajax nicht richtig funktioniert"> Thymeleaf mit Ajax nicht richtig funktioniert </a> </li> <li> 21. <a href="http://de.voidcc.com/question/p-fmrkzhgy-hq.html" target="_blank" title="Google Map Fragment verursacht Render-Fehler in Android Studio"> Google Map Fragment verursacht Render-Fehler in Android Studio </a> </li> <li> 22. <a href="http://de.voidcc.com/question/p-gccegywd-ho.html" target="_blank" title="- Thymeleaf"> - Thymeleaf </a> </li> <li> 23. <a href="http://de.voidcc.com/question/p-ynualyan-eq.html" target="_blank" title="Base64String Bild mit Thymeleaf"> Base64String Bild mit Thymeleaf </a> </li> <li> 24. <a href="http://de.voidcc.com/question/p-tornvxei-kd.html" target="_blank" title="Benutzerdefinierte Fehlerseite mit Thymeleaf"> Benutzerdefinierte Fehlerseite mit Thymeleaf </a> </li> <li> 25. <a href="http://de.voidcc.com/question/p-pahtiupt-mw.html" target="_blank" title="Verschachtelte Tabellen mit thymeleaf"> Verschachtelte Tabellen mit thymeleaf </a> </li> <li> 26. <a href="http://de.voidcc.com/question/p-umnjrvpc-co.html" target="_blank" title="Wie mit Thymeleaf"> Wie mit Thymeleaf </a> </li> <li> 27. <a href="http://de.voidcc.com/question/p-ctnycqhw-ed.html" target="_blank" title="Javascript Funktionsaufruf mit Thymeleaf"> Javascript Funktionsaufruf mit Thymeleaf </a> </li> <li> 28. <a href="http://de.voidcc.com/question/p-ptoudomh-dt.html" target="_blank" title="Thymeleaf Fehler Nachrichten Optimierung"> Thymeleaf Fehler Nachrichten Optimierung </a> </li> <li> 29. <a href="http://de.voidcc.com/question/p-epkktwde-ez.html" target="_blank" title="Ändern von TextView Inhalt in Fragment"> Ändern von TextView Inhalt in Fragment </a> </li> <li> 30. <a href="http://de.voidcc.com/question/p-tkzwnack-ka.html" target="_blank" title="Inhalt auf Fragment durch vorherigen Knopfklick ändern"> Inhalt auf Fragment durch vorherigen Knopfklick ändern </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=1652515422091"></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"> Letzte Frage </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://de.voidcc.com/question/p-gelcrpek-oa.html" target="_blank" title="Zeige Elemente unter Überlauf: versteckt"> Zeige Elemente unter Überlauf: versteckt </a> </li> <li class="side_article_list_item"> 2. <a href="http://de.voidcc.com/question/p-rudnrooh-nz.html" target="_blank" title="So extrahieren Sie Zertifikate aus einer Zeitstempel Antwort in Bouncy Castle"> So extrahieren Sie Zertifikate aus einer Zeitstempel Antwort in Bouncy Castle </a> </li> <li class="side_article_list_item"> 3. <a href="http://de.voidcc.com/question/p-slplnmqx-nz.html" target="_blank" title="height = "100%" funktioniert mit <object> aber nicht mit <img>, Unterschied HTML vs CSS width/height Eigenschaft?"> height = "100%" funktioniert mit <object> aber nicht mit <img>, Unterschied HTML vs CSS width/height Eigenschaft? </a> </li> <li class="side_article_list_item"> 4. <a href="http://de.voidcc.com/question/p-bobyzwhn-nz.html" target="_blank" title="C++ binärer Suchbaum durch Verwendung der Dereferenz"> C++ binärer Suchbaum durch Verwendung der Dereferenz </a> </li> <li class="side_article_list_item"> 5. <a href="http://de.voidcc.com/question/p-yxpmczuo-ny.html" target="_blank" title="Installation von Larval Valet in MacOS Heigh Sierra"> Installation von Larval Valet in MacOS Heigh Sierra </a> </li> <li class="side_article_list_item"> 6. <a href="http://de.voidcc.com/question/p-khcuokgy-nt.html" target="_blank" title="Dolch2 und Qualifier in abhängigen Komponenten"> Dolch2 und Qualifier in abhängigen Komponenten </a> </li> <li class="side_article_list_item"> 7. <a href="http://de.voidcc.com/question/p-uqwsrdbi-nu.html" target="_blank" title="Muss get_prep_value() mit value = None umgehen?"> Muss get_prep_value() mit value = None umgehen? </a> </li> <li class="side_article_list_item"> 8. <a href="http://de.voidcc.com/question/p-ktmvgyzc-nw.html" target="_blank" title="Wie erzwinge Lesevorgänge von Read Replica in Postgres mit Django und oder Kolben?"> Wie erzwinge Lesevorgänge von Read Replica in Postgres mit Django und oder Kolben? </a> </li> <li class="side_article_list_item"> 9. <a href="http://de.voidcc.com/question/p-xvpltmih-nw.html" target="_blank" title="Klartext innerhalb der JTextField in Java"> Klartext innerhalb der JTextField in Java </a> </li> <li class="side_article_list_item"> 10. <a href="http://de.voidcc.com/question/p-snqjdhhe-nx.html" target="_blank" title="Wird versucht, mit der Klausel case when für MultiDocumentQuery orderby zu sortieren?"> Wird versucht, mit der Klausel case when für MultiDocumentQuery orderby zu sortieren? </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> Verwandte Themen</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://de.voidcc.com/question/p-tekbylcp-my.html" target="_blank" title="Thymeleaf render auf Fragmenten"> Thymeleaf render auf Fragmenten </a> </li> <li class="side_article_list_item"> 2. <a href="http://de.voidcc.com/question/p-gvyrfzhg-ke.html" target="_blank" title="Thymeleaf Fragment Logik"> Thymeleaf Fragment Logik </a> </li> <li class="side_article_list_item"> 3. <a href="http://de.voidcc.com/question/p-kkdifnrk-om.html" target="_blank" title="Thymeleaf ignorieren Fragment nicht gefunden"> Thymeleaf ignorieren Fragment nicht gefunden </a> </li> <li class="side_article_list_item"> 4. <a href="http://de.voidcc.com/question/p-rmwjgzka-mm.html" target="_blank" title="Thymeleaf Löwenzahn Datatable mit zusätzlichen Spalten auf Seite render"> Thymeleaf Löwenzahn Datatable mit zusätzlichen Spalten auf Seite render </a> </li> <li class="side_article_list_item"> 5. <a href="http://de.voidcc.com/question/p-vkrmgril-gd.html" target="_blank" title="ThymeLeaf Fragment ausgeführt auf false th: wenn"> ThymeLeaf Fragment ausgeführt auf false th: wenn </a> </li> <li class="side_article_list_item"> 6. <a href="http://de.voidcc.com/question/p-klrgnzrw-ev.html" target="_blank" title="Referenzobjekt, das an Thymeleaf-Fragment übergeben wurde"> Referenzobjekt, das an Thymeleaf-Fragment übergeben wurde </a> </li> <li class="side_article_list_item"> 7. <a href="http://de.voidcc.com/question/p-byencrig-kd.html" target="_blank" title="Wie Parameter an Thymeleaf Ajax Fragment übergeben"> Wie Parameter an Thymeleaf Ajax Fragment übergeben </a> </li> <li class="side_article_list_item"> 8. <a href="http://de.voidcc.com/question/p-afxfhswn-ec.html" target="_blank" title="render PHP-Inhalt in Abschnitt"> render PHP-Inhalt in Abschnitt </a> </li> <li class="side_article_list_item"> 9. <a href="http://de.voidcc.com/question/p-obeeciic-ds.html" target="_blank" title="Fragment Inhalt wird abgeschnitten"> Fragment Inhalt wird abgeschnitten </a> </li> <li class="side_article_list_item"> 10. <a href="http://de.voidcc.com/question/p-rcrxvity-hu.html" target="_blank" title="ImageButtons hat Render kein Fragment Karte über"> ImageButtons hat Render kein Fragment Karte über </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://de.voidcc.com/contact">Sprechen Sie uns an</a></li> <li>© 2020 DE.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>