如何在 JMustache 的子模板中处理地图列表?
How do I process a List of Maps in a subtemplate in JMustache?
我一直在自学 JMustache,我正在尝试将地图列表发送到子模板。我有以下 Java 测试:
@Test
public void testWithNestedPartial() {
final WeakHashMap<String, Object> parameters = new WeakHashMap<>();
parameters.put("start", "hello");
final List<Map<String, String>> subParameterList = new ArrayList<>();
WeakHashMap<String, String> subParameters = new WeakHashMap<>();
subParameters.put("greek", "alpha");
subParameters.put("numeric", "1");
subParameterList.add(subParameters);
subParameters = new WeakHashMap<>();
subParameters.put("greek", "beta");
subParameters.put("numeric", "2");
subParameterList.add(subParameters);
parameters.put("sub", subParameters);
final Compiler subTemplateLoadingCompiler = Mustache.compiler()
.withLoader(templateName -> Files.newBufferedReader(Paths.get(TEST_TEMPLATE_PATH + templateName + ".htmm")));
final Template template = subTemplateLoadingCompiler.compile("{{start}}\r\n{{> complex-partial}}");
final String result = template.execute(parameters);
Assert.assertEquals(result, "hello\r\n• alpha\r\n• 1\r\n• beta\r\n• 2\r\n");
}
...与复杂-partial.htmm:
{{# sub.this}}
• {{greek}}
• {{numeric}}
{{/ sub.this}}
...结果如下:
java.lang.AssertionError: expected [hello
• alpha
• 1
• beta
• 2
] but found [hello
• beta
• 2
]
如果我切换它并把 "alpha" 和 1 放在最后,它会显示 "alpha" 和 1。
我知道我没有正确编写子模板,并且尝试了不同的方法来设置其中的参数,但解决方案让我望而却步。如何编写此部分以通过此测试?
OP 打错字了。
他打算用
parameters.put("sub", subParameterList)
而不是
parameters.put("sub", subParameters)
我一直在自学 JMustache,我正在尝试将地图列表发送到子模板。我有以下 Java 测试:
@Test
public void testWithNestedPartial() {
final WeakHashMap<String, Object> parameters = new WeakHashMap<>();
parameters.put("start", "hello");
final List<Map<String, String>> subParameterList = new ArrayList<>();
WeakHashMap<String, String> subParameters = new WeakHashMap<>();
subParameters.put("greek", "alpha");
subParameters.put("numeric", "1");
subParameterList.add(subParameters);
subParameters = new WeakHashMap<>();
subParameters.put("greek", "beta");
subParameters.put("numeric", "2");
subParameterList.add(subParameters);
parameters.put("sub", subParameters);
final Compiler subTemplateLoadingCompiler = Mustache.compiler()
.withLoader(templateName -> Files.newBufferedReader(Paths.get(TEST_TEMPLATE_PATH + templateName + ".htmm")));
final Template template = subTemplateLoadingCompiler.compile("{{start}}\r\n{{> complex-partial}}");
final String result = template.execute(parameters);
Assert.assertEquals(result, "hello\r\n• alpha\r\n• 1\r\n• beta\r\n• 2\r\n");
}
...与复杂-partial.htmm:
{{# sub.this}}
• {{greek}}
• {{numeric}}
{{/ sub.this}}
...结果如下:
java.lang.AssertionError: expected [hello
• alpha
• 1
• beta
• 2
] but found [hello
• beta
• 2
]
如果我切换它并把 "alpha" 和 1 放在最后,它会显示 "alpha" 和 1。
我知道我没有正确编写子模板,并且尝试了不同的方法来设置其中的参数,但解决方案让我望而却步。如何编写此部分以通过此测试?
OP 打错字了。
他打算用
parameters.put("sub", subParameterList)
而不是
parameters.put("sub", subParameters)