Как дублировать данные основного цикла в JETT?
Я разрабатываю отчет Excel с данными иерархии. Используя JETT (переводчик шаблонов java excel), я хотел бы дублировать строки из основного цикла, когда есть коллекция коллекций. Вот краткий пример.
public class JettTest {
@Test
public void run() throws IOException {
ClassLoader classLoader = getClass().getClassLoader();
InputStream template = classLoader.getResourceAsStream("template.xlsx");
try (
XSSFWorkbook wb = new XSSFWorkbook(template);
FileOutputStream fos = new FileOutputStream("target/output.xlsx")
) {
Map<String, Object> params = new HashMap<>();
Parent parent1 = new Parent("parent1", Arrays.asList("child1", "child2"));
Parent parent2 = new Parent("parent2", Arrays.asList("childX", "childY"));
List<Parent> parents = Arrays.asList(parent1, parent2);
params.put("parents", parents);
ExcelTransformer transformer = new ExcelTransformer();
transformer.transform(wb, params);
wb.write(fos);
}
}
public class Parent {
private String name;
private List<String> children;
public Parent(String name, List<String> children) {
this.name = name;
this.children = children;
}
public String getName() {
return name;
}
public List<String> getChildren() {
return children;
}
}
}
Шаблон Excel
А1 является
<jt:forEach items="${parents}" var="parent">${parent.name}
B1 является
<jt:forEach items="${parent.children}" var="child">${child}</jt:forEach></jt:forEach>
Это дает мне
Это выглядит хорошо, однако мне нужно дублировать имена родителей и получить
Есть идеи, пожалуйста?
1 ответ
Решение
Тебе понадобиться {parent.name}
быть внутри ребенка forEach
Отметьте, если вы хотите, чтобы родительское имя отображалось для каждого дочернего имени.
Что произойдет, если вы переместите ребенка forEach
тег от B1 до A1, сразу после родителя forEach
тег?