java - 如何在 JMustache 中处理子模板中的 map 列表?

标签 java templates mustache

我一直在自学 JMustache,并尝试将 map 列表发送到子模板。我有以下 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");
}

...与complex-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)

关于java - 如何在 JMustache 中处理子模板中的 map 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454355/

相关文章:

java - 未调用自定义 AccessDeniedHandler

c++ - clang 与 gcc 运行时差异 : c++ class template built w clang crashes w/o copy constructor, 使用复制构造函数构建 gcc 崩溃

javascript - 是否不需要循环执行executeSql命令的结果?

c# - Nustache View 引擎 ArrayTypeMismatchException

java - Mockito 的问题

java - 在 Android studio 中使用 Jcenter 和 gradle

java - native Android 教程给出错误

c++ - 如何检查所有可变参数模板参数是否具有特殊功能?

c++ - 我可以重载 operator= 将一个类的对象分配给另一个类的变量,但两个类都来自同一个类模板

javascript - 如何使用 Mustache.js 渲染普通数组?