template-engine - 在 Jinjava 中渲染一个循环?
问题描述
我正在使用 jinjava 编写一个 java 应用程序。问题是,模板中有一个循环。
是否可以在 jinjava 中使用循环渲染模板。
这是我从客户端作为 json 文件收到的模板和上下文。
模板:
[
{%- for scheme in context -%}{%- if loop.index>1 %},{%endif-%}
{
"nr": "V01 {{scheme.schemekrz}}",
"photo": null,
"text": ["{{scheme.schemename}}",
"{{scheme.article}}",
"{{scheme.article}}(<u>{{scheme.articlenr}}</u>,{{scheme.articlename}},{{scheme.price}})",
"{{scheme.schemeerl}}",
"Some Text {{scheme.articlename}}Some Text {{scheme.artikel}}({{scheme.articlename}})",
"Some Text"
],
"Issue": {
"text": ["Some Text",
"{{scheme.articlename}}, ({{scheme.price}})"
],
"nr":0,
"options": [],
"photo": null
},
"title": "SQLTuning ..."
}
{%- endfor -%}
]
语境:
[
{
"schemanr" : "2",
"schemekrz" : "Product",
"schemename" : "Product BM",
"schemeerl" : "path",
"article" : "Product BMA",
"articlenr" : "45",
"articlename" : "Test",
"price" : "30"
},
{
"schemanr" : "1",
"schemekrz" : "Product",
"schemename" : "Product VD",
"schemeerl" : "path",
"article" : "Product VDF",
"articlenr" : "22",
"articlename" : "Test 3",
"price" : "8"
}
...
]
我写的 java Methode 是这样的:
public void templating() throws Exception {
File contextPath = new File("article _1_to_8.json");
File output = new File("output.json");
PrintWriter out1 = null;
try {
Jinjava jinjava = new Jinjava();
ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> list = mapper.readValue(contextPath,
new TypeReference<List<Map<String, Object>>>() {
});
String template = new String(Files.readAllBytes(Paths.get("templateFile.json")));
/*
not working
String renderedTemplate = "";
for (Map<String, ?> context : list) {
renderedTemplate += jinjava.render(template, context);
}*/
String renderedTemplate = jinjava.render(template, list.get(0));
out1 = new PrintWriter(new FileWriter(output));
out1.write(renderedTemplate);
} catch (Exception e) {
e.printStackTrace();
}
}
如果您知道用于此类任务的 jinjava 更好的引擎,请告诉我。
解决方案
推荐阅读
- vue.js - 如何使用 ESM 导入 Vue Material (Webpack UMD)?
- websphere - 如何在 MFP 8.0 中测试自定义令牌过期
- python - 根据两列条件删除行
- wordpress-theming - 如何解决列和图像对齐的布局问题?
- python-3.x - 在当前元素中输入下一个元素的值
- python - 我想在 python 中运行一个简单的骰子程序,将六面骰子滚动 10 次,但程序没有
- parsing - 一通 C 编译器如何处理标签?
- mongodb - 一个自动缩放的mongodb副本集
- jquery - jquery hide 和 css display none 不起作用
- ruby - 是什么意思?