Bonjour,

j'ai repris un exemple trouvé sur le net, malgré tout freemarker ne récupère pas les valeurs de mon objet.

Voici mon code :

Map
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Map<String, List<Person>> root = new LinkedHashMap<String, List<Person>>();
List<Person> personList = new LinkedList<Person>();
personList.add(new Person("John", "Smith"));
personList.add(new Person("Johnny", "Parker"));
root.put("personList", personList);
Configuration
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
cfg.setDirectoryForTemplateLoading(new File(templatePath));
cfg.setTemplateExceptionHandler(new AuthorisationsExceptionHandler());
cfg.setObjectWrapper(new BeansWrapper());
 
template = cfg.getTemplate(templateName);	
File mergedFile = new File(targetPath+targetFile);
Writer out = new BufferedWriter(new FileWriter(mergedFile));
 
template.process(root, out);
out.flush();
out.close();
Template
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<#list personList as x>
${x.lastName};${x.firstName}
</#list>
J'ai aussi essayé avec un type LinkedHashMap<String,Person> pour personList pour vérifier si c'était un problème de parcourir une liste de clés, mais le résultat est le même.

Exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Expected collection or sequence. personList evaluated instead to freemarker.ext.beans.MapModel on line 1, column 8 in dataTemplate1.ftl.
The problematic instruction:
----------
==> list personList as x [on line 1, column 1 in dataTemplate1.ftl]
----------