子类继承父类,覆写了父类的属性,子类中相同字段的自定义converter无效
父类:
子类:
导出excel:
出现问题版本3.3.3,2.2.11版本是没问题的。
与这个已关闭Issue同样的问题,目前仍未解决。#3209
4jb9z9bj1#
解决办法如下:
Field[] declaredFields = tempClass.getDeclaredFields();for (Field declaredField : declaredFields) {if (tempFieldList.stream().noneMatch(field -> field.getName().equals(declaredField.getName()))) {tempFieldList.add(declaredField);}}
lymnna712#
着急使用可以再建一个JavaBean.. 上述这种做法本身就不太规范
eqqqjvef3#
业务上有需要得使用继承这种做法,项目中太多地方使用了,从2.2版本升级到3.3.3需要改动的地方太多,不好排查
mrwjdhj34#
只需要为导出功能重建呀 ,不影响你本身的业务逻辑吧。 如果有多个接口需要导出可以加一个适配器。(在无法得到发版的情况下)
i86rm4rw5#
我重写了com.alibaba.excel.util.ClassUtils 这个类,现在相同字段的Field,父类的在 list 的后方所以会覆盖,我反转了一下 list
nr7wwzry6#
遇到同样的问题,继承的情况下,cellWriteHandlerContext.getExcelContentProperty().getConverter()获取不到子类注解上的converter
6条答案
按热度按时间4jb9z9bj1#
解决办法如下:
Field[] declaredFields = tempClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
if (tempFieldList.stream().noneMatch(field -> field.getName().equals(declaredField.getName()))) {
tempFieldList.add(declaredField);
}
}
lymnna712#
着急使用可以再建一个JavaBean.. 上述这种做法本身就不太规范
eqqqjvef3#
着急使用可以再建一个JavaBean.. 上述这种做法本身就不太规范
业务上有需要得使用继承这种做法,项目中太多地方使用了,从2.2版本升级到3.3.3需要改动的地方太多,不好排查
mrwjdhj34#
只需要为导出功能重建呀 ,不影响你本身的业务逻辑吧。 如果有多个接口需要导出可以加一个适配器。(在无法得到发版的情况下)
i86rm4rw5#
我重写了com.alibaba.excel.util.ClassUtils 这个类,现在相同字段的Field,父类的在 list 的后方所以会覆盖,我反转了一下 list
nr7wwzry6#
遇到同样的问题,继承的情况下,cellWriteHandlerContext.getExcelContentProperty().getConverter()获取不到子类注解上的converter