easyexcel 子类继承父类,覆写了父类的属性,子类中相同字段的自定义converter无效

jslywgbw  于 5个月前  发布在  其他
关注(0)|答案(6)|浏览(63)

触发场景描述

子类继承父类,覆写了父类的属性,子类中相同字段的自定义converter无效

触发Bug的代码

父类:

子类:

导出excel:

出现问题版本3.3.3,2.2.11版本是没问题的。

与这个已关闭Issue同样的问题,目前仍未解决。
#3209

4jb9z9bj

4jb9z9bj1#

解决办法如下:

Field[] declaredFields = tempClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
if (tempFieldList.stream().noneMatch(field -> field.getName().equals(declaredField.getName()))) {
tempFieldList.add(declaredField);
}
}

lymnna71

lymnna712#

着急使用可以再建一个JavaBean.. 上述这种做法本身就不太规范

eqqqjvef

eqqqjvef3#

着急使用可以再建一个JavaBean.. 上述这种做法本身就不太规范

业务上有需要得使用继承这种做法,项目中太多地方使用了,从2.2版本升级到3.3.3需要改动的地方太多,不好排查

mrwjdhj3

mrwjdhj34#

只需要为导出功能重建呀 ,不影响你本身的业务逻辑吧。 如果有多个接口需要导出可以加一个适配器。(在无法得到发版的情况下)

i86rm4rw

i86rm4rw5#

我重写了com.alibaba.excel.util.ClassUtils 这个类,现在相同字段的Field,父类的在 list 的后方所以会覆盖,我反转了一下 list

nr7wwzry

nr7wwzry6#

遇到同样的问题,继承的情况下,cellWriteHandlerContext.getExcelContentProperty().getConverter()获取不到子类注解上的converter

相关问题