easyexcel
easyexcel copied to clipboard
BeanMap dataMap put数据一直失败
版本:3.3.2
问题1: 编译器源码报错
问题2: 我动态生成了一个实体类,代码如下:
private Class<?> createDynamicClass(List<ArchiveField> archiveFields) {
DynamicType.Builder<Object> builder = new ByteBuddy()
.subclass(Object.class)
.name("DynamicExcelEntity");
for (ArchiveField field : archiveFields) {
String fieldName = field.getFieldName();
String fieldComment = field.getFieldComment();
Class<?> fieldType = String.class;
builder = builder.defineField(fieldName, fieldType, Visibility.PUBLIC)
.annotateField(AnnotationDescription.Builder.ofType(ExcelProperty.class)
.defineArray("value", new String[]{fieldComment})
.build());
}
return builder.make()
.load(getClass().getClassLoader())
.getLoaded();
}
在dataMap.put(fieldName, value);这一步一直put不进去.dataMap大小一直为0,断点如下动画所示
什么场景会遇到这个问题? 我使用的挺好的
什么场景会遇到这个问题? 我使用的挺好的
看我的问题2呀,动态生成的实体类.动态生成实体类的代码也给了呀.
同样的问题,请问解决了吗 ?
同样的问题,请问解决了吗 ? 没有
@Test
public void t1() {
MemberInit memberInit = new MemberInit();
BeanMap beanMap = BeanMapUtils.create(memberInit);
beanMap.put("uid", "1");
memberInit.setBirthday("2");
System.out.println(memberInit);
}
现在生日写进去了,可以在beanmap看到,uid没写进去 经过验证,能读get不能写put
@Test public void t1() { MemberInit memberInit = new MemberInit(); BeanMap beanMap = BeanMapUtils.create(memberInit); beanMap.put("uid", "1"); memberInit.setBirthday("2"); System.out.println(memberInit); }
现在生日写进去了,可以在beanmap看到,uid没写进去 经过验证,能读get不能写put
那看来确实有问题呀!!!
反复尝试,加@ Data 注解似乎没问题,但又加了@ Accessors(chain = true)就会导致put不进去
反复尝试,加@ Data 注解似乎没问题,但又加了@ Accessors(chain = true)就会导致put不进去
确实如此,我也搞了半天,发现不报错,也放不进去。 使用@Accessors添加这个注解之后,会在setXXX方法返回对象自身类型,而EasyExcel只找setXXX返回类型为void的方法 因此报错了
并且,如果使用一堆注解: @Data @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) 连报错信息都吞没了,而且还给个属性为空的数据
什么场景会遇到这个问题? 我使用的挺好的
@Data @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) 使用以上一堆注解时候试试,连报错信息都没有
同样碰到了这个问题,应该就是框架只支持拿返回值为void的setXXX方法,用了@Accessor的DTO就G了,代码如下:
是的我也遇见了这个问题,原因是实体类上加了@accessors(chain = true)注解导致他赋不上值,建议把@accessors(chain = true)去掉,就好了
是的我也遇见了这个问题,原因是实体类上加了@accessors(chain = true)注解导致他赋不上值,建议把@accessors(chain = true)去掉,就好了
我没加啊.