我正在尝试使用Thymeleaf模板呈现XML/JSON。我不想使用模板名称渲染视图,只想解析模板,如下所示。问题是我得到的只是模板名,而不是它的内容。
设置:
@Bean
SpringResourceTemplateResolver xmlTemplateResolver(ApplicationContext appCtx) {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(appCtx);
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".xml");
templateResolver.setTemplateMode(XML);
templateResolver.setCharacterEncoding(UTF_8.name());
templateResolver.setCacheable(false);
return templateResolver;
}
@Bean
SpringTemplateEngine templateEngine(ApplicationContext appCtx) {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(xmlTemplateResolver(appCtx));
return templateEngine;
}
模板(src/main/resources/templates/早餐菜单.xml):
<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
<food>
<name>${item['name']}</name>
<price>${item['price']}</price>
<description>${item['description']}</description>
<calories>${item['calories']}</calories>
</food>
</breakfast_menu>
用法:
@Autowired
SpringTemplateEngine templateEngine;
someMethod() {
Context context = new Context();
context.setVariable("item", item);
item.put("name", "Waffle");
String content = templateEngine.process("breakfast-menu", context);
// content == "breakfast-menu". WTH?
}
使用Thymeleaf3.0。0.BETA01。
为了完整起见,这里有一些代码来解决一个没有Spring的普通胸腺模板。这是针对超文本标记语言的,但是您可以通过为setTemplateMode
调用设置另一个参数来使其适应其他模板模式:
Maven依赖:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
Java类:
import java.util.Map;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.StringTemplateResolver;
public class ThymeleafResolver {
public static String resolveHTMLWithThymeleaf(String html, Map<String, Object> variables) {
TemplateEngine templateEngine = new TemplateEngine();
StringTemplateResolver templateResolver = new StringTemplateResolver();
templateResolver.setTemplateMode(TemplateMode.HTML);
templateEngine.setTemplateResolver(templateResolver);
Context context = new Context();
context.setVariables(variables);
return templateEngine.process(html, context);
}
}
Testcase Java代码:
Map<String, Object> variables = new HashMap<>();
variables.put("mytext", "Hello World");
String result = ThymeleafInterpreter.interpretHTMLWithThymeleaf("<html><body><span th:text=\"${mytext}\"></span></body></html>", variables);
Assert.assertEquals("<html><body><span>Hello World</span></body></html>", result);
我在Thymeleaf用户论坛的帮助下解决了这个问题。由于我不知道的原因,templateEngine。addTemplateResolver
不工作,但templateEngine。setTemplateResolver
执行此操作。XML和JSON输出的模板如下所示:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
<food>
<name th:text="${item['name']}"></name>
<price th:text="${item['price']}"></price>
<description th:text="${item['description']}"></description>
<calories th:text="${item['calories']}"></calories>
</food>
</breakfast_menu>
JSON:
{
"food": {
"name": "[[${item['name']}]]",
"price": "[[${item['price']}]]",
"description": "[[${item['description']}]]",
"calories": "[[${item['calories']}]]"
}
}
简短:给定(groupId,artifactId,version,repository URL),我可以用编程方式让Maven解析工件URL吗? Long:给定(groupId、artifactId、version、repository URL),可以下载一个Maven工件。工件的URL通常如下所示: 方案://{repository}/{groupId}/{artifactId}/{versio
我需要通过编程将符合XText语法的文本转换为符合XText从同一语法生成的Ecore元模型的AST。 我知道XText也会生成实现这种解析器的Java类,但我也不知道它们在哪里以及如何使用它。
问题内容: 我需要以编程方式计算给定jar文件中已编译类,接口和枚举的数量(因此我需要三个单独的数字)。哪个API对我有帮助?(我不能使用第三方库。) 我已经尝试过非常棘手的方案,这似乎并不总是正确的。即,我将每个ZipEntry读入byte [],然后将结果提供给我的自定义类加载器,该加载器扩展了标准CalssLoader并将此byte []发送到ClassLoader.defineClass(
我正在尝试使用Java解决一个数独难题。目前该类无法正确解数独。 此类尝试在9x9矩阵中查找0(空格),并在列表中记下0的位置,以供以后参考。然后,它将使用这些位置来求解该0。不幸的是,它似乎不像我希望的那样起作用。 这是我使用的9x9矩阵: 这个9x9矩阵中有51个0,但是当它解决这个难题时,出于某种奇怪的原因,它会附加66个位置。我似乎无法准确指出问题所在。任何帮助都将不胜感激! 这是它尝试的
本文向大家介绍Android编程设计模式之模板方法模式详解,包括了Android编程设计模式之模板方法模式详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程设计模式之模板方法模式。分享给大家供大家参考,具体如下: 一、介绍 在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是,某些步骤的具体实现是未知的,或者说
问题内容: 我正在尝试使用JAVA解析JFR转储。我关注了这个博客,http://hirt.se/blog/?p=446。但是现在不推荐使用这些方法。JFR到JAVA是否有任何受支持的解析器?如果不能,您能否指出我是否可以从JFR转储中检索数据? 问题答案: 正如Klara提到的那样,没有官方支持的解析器。希望JDK 9将正式支持JFR解析器。现在,您可以使用Hirt博客中提到的API 。不用担心