获取Raw Html来自控制器Spring thymeleaf

时间:2017-10-26 19:46:58

标签: spring spring-boot thymeleaf

我有一个控制器,可以创建模型属性并传递给视图“partial.html”以生成输出

partial.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Home page</title>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>
<p>
    <span th:text="'Today is: ' + ${message}"></span>
</p>
</body>
</html>

并在控制器方法中

model.addAttribute("message", search);

如何将Htlm输出转换为控制器方法中的字符串? 像这样

String htmlOutput="from partial.html";

4 个答案:

答案 0 :(得分:3)

如果你正在使用通常的Spring MVC方法,正如乔安娜所说,你正在以错误的顺序做事。 Controller创建模型并指定视图,然后视图由使用模型的Thymeleaf模板呈现。

另一方面,如果您尝试自己呈现Thymeleaf模板(而不是直接将其发送到用户的浏览器,可能用于HTML电子邮件或将预呈现的页面存储在数据库中)或某事),那么您需要创建自己的Thymeleaf模板引擎才能使用。请参阅&#34; Creating and configuring the Template Engine&#34;文档的一部分以获取详细信息。您可以创建自己的引擎,然后使用其process方法将模板的结果放入变量中以供进一步使用。

答案 1 :(得分:1)

假设您有一个HTML文件,带有两个变量名,todayDate,并且想要对其进行处理并将其存储在字符串,数据库或AWS s3中。

>> import cv2

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import cv2
ImportError: DLL load failed: %1 is not a valid Win32 application.

答案 2 :(得分:0)

一旦控件出来查看处理器(JSP / Thymeleaf等),它就不会回到控制器。您将能够在customFilter中获取原始html响应,但不能在Controller中获取。

答案 3 :(得分:0)

您可能会寻找this,直接获取结果HTML,而忽略帖子的电子邮件部分。

然后,您可以创建一个:

final Context ctx = new Context(locale);
ctx.setVariable("name", recipientName);
ctx.setVariable("subscriptionDate", new Date());
ctx.setVariable("hobbies", Arrays.asList("Cinema", "Sports", "Music"));
ctx.setVariable("imageResourceName", imageResourceName); 
// so that we can reference it from HTML
final String htmlContent = this.templateEngine.process("html/email-inlineimage.html", ctx);

因此,您具有呈现的百里香模板的htmlContext(带有vars)