我收到的字符串已经有一个百万美元标签,如下所示:
String html = "<span th:text="${fisrtText}"></span> Indicative Terms for a <span th:text="${currency}"></span><span th:text="${amount}"></span>M <span th:text="${type}"></span> Facility";
我将上面的字符串设置为上下文变量:
context.setVariable("topSection", html);
我正在设置上下文变量,其值用于替换上面字符串中的标记:
org.thymeleaf.context.Context context = new org.thymeleaf.context.Context();
context.setVariable("fisrtText", "This is fisrt Text");
context.setVariable("currency", "$");
context.setVariable("amount", 256.10);
context.setVariable("type", "Loan");
现在在template.html中我想尝试如下:
<span th:utext="@{__${topSection}__}"></span>
我希望将html字符串替换为上下文中可用的值。但它返回相同的html,没有任何处理:
<span th:text="${fisrtText}"></span> Indicative Terms for a <span th:text="${currency}"></span><span th:text="${amount}"></span>M <span th:text="${type}"></span> Facility"
任何帮助将不胜感激。
答案 0 :(得分:1)
最好将多个模板Engine bean用于String,将另一个用于资源HTML文件。
1)对于资源文件
@Bean(name ="templateEngine")
public SpringTemplateEngine getTemplateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(new ClassLoaderTemplateResolver(););
templateEngine.setMessageSource(messageSource);
templateEngine.setTemplateEngineMessageSource(messageSource);
return templateEngine;
}
您可以为ClassLoaderTemplateResolver设置前缀和后缀。
2)字符串模板解析器:
@Bean(name ="stringTemplateEngine")
public SpringTemplateEngine getTemplateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(new StringTemplateResolver(););
return templateEngine;
}
现在首先使用stringTemplateEngine解析带有thymeleaf标记的字符串变量。
String html = "<span th:text="${fisrtText}"></span>";
String parsedHtml = stringTemplateEngine.process(html,context);
现在将ParsedHtml放在上下文中。
context.setVariable("topSection", parsedHtml);
然后As @ holmis83建议直接访问模板中的变量
<span th:utext="${topSection}"></span>
答案 1 :(得分:0)
@{...}
是链接网址表达式。我想你想使用变量表达式 ${...}
。
您的代码已调整:
<span th:utext="${__${topSection}__}"></span>
请注意${topSection}
必须评估为表达式,它不能是任意的Thymeleaf标记(例如th:text
)。