Je me suis enseigné JMustache et j'essaye d'envoyer une liste de cartes à un sous-modèle. J'ai le test Java suivant:Comment traiter une liste de cartes dans un sous-modèle dans JMustache?
@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");
}
... avec -partial.htmm complexe:
{{# sub.this}}
• {{greek}}
• {{numeric}}
{{/ sub.this}}
... avec le résultat suivant:
java.lang.AssertionError: expected [hello
• alpha
• 1
• beta
• 2
] but found [hello
• beta
• 2
]
Si je passer et mettre "alpha" et 1 en dernier, il montre "alpha" et 1.
Je sais que je Le sous-template n'a pas été écrit correctement, et j'ai essayé différentes façons de configurer les paramètres, mais la solution ne m'échappe pas. Comment écrire ce partiel pour réussir ce test?
Ne vous dire 'parameters.put ("sous", subParameterList)' au lieu de 'parameters.put ("sous" , subParameters) '? Sinon, la collection 'subParameterList' est mise à jour, mais n'a jamais été interrogée. –
@LucianovanderVeekens Haha, j'en suis sûr! Ça fonctionne parfaitement maintenant; Merci beaucoup –