ReportingEngine引擎替换内容,Found interface java.util.Map, but class was expected

您好,我使用的Aspose-word版本是23.6,在使用组件的ReportingEngine引擎来替换文档内容时,因为数据源的某个属性是List<Map<String, String>>类型,导致最终转换的时候提示java.lang.IncompatibleClassChangeError: Found interface java.util.Map, but class was expected,请问有什么办法可以避免这个报错呢?

代码如下:

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Dto {
        List<Map<String, String>> mapList;
    }

    public void pdf(HttpServletResponse response) throws Exception {
        List<Map<String, String>> mapList = new ArrayList<>();
        Map<String, String> map = new HashMap<>();
        map.put("key", "value")
        mapList.add(map);
        Dto dto = new Dto(mapList);

        try (InputStream inputStream = Files.newInputStream(Paths.get("doc\\test.docx"))) {
            LoadOptions opt = new LoadOptions();
            opt.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.CHINESE_PRC);
            Document doc = new Document(inputStream, opt);
            ReportingEngine engine = new ReportingEngine();
            engine.buildReport(doc, dto, "dto");
            doc.save(response.getOutputStream(), SaveFormat.DOCX);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

文档中的内容:

<<foreach [item in dto.getMapList()]>>
       <<[item.get(“key”)]>>
<</foreach>>

@songyassen 我的 24.7 版本没有问题,但在 23.6 版本中,您应该使用 HashMap<String, String> 而不是 Map<String, String>,以避免此问题。

感谢回复,上面的问题已经解决了,现在我又发现了新的问题,我在模板中设置了段落文字左对齐,但是生成Word之后文字没有左对齐,请问该如何处理呢?
模板的样式:

生成的word样式

除此之外,我在Word模板中如果把标签单独设置为一行,那么转换出来的word会有一行空格,把标签和上一段文字放在同一行,空格就消失了,但是这样的话可读性会差很多,请问有办法设置吗,不让标签占用一行?

@songyassen 遗憾的是,我无法重现文本左对齐的问题。能否请您附上一个示例模板,以帮助我们重现该问题?或者,您可以尝试使用以下代码:

ReportingEngine engine = new ReportingEngine();
engine.setOptions(ReportBuildOptions.REMOVE_EMPTY_PARAGRAPHS);

在创建后删除文档中的空段落。