2017-09-27 4 views
1

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?

+1

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. –

+0

@LucianovanderVeekens Haha, j'en suis sûr! Ça fonctionne parfaitement maintenant; Merci beaucoup –

Répondre

1

OP a fait une faute de frappe.

Il voulait utiliser

parameters.put("sub", subParameterList) 

au lieu de

parameters.put("sub", subParameters)