我使用这个文档示例作为参考,通过指定某些对象的标题、名称和所需的属性来创建动态网格。grid.html
但在我的例子中,Employee对象具有嵌套属性"adres.housenumber“。
public class Employee {
private String name;
private Date birthDate;
private BigDecimal payment;
private BigDecimal bonus;
private Adres adres;
// constructors and getters/setters
.....
}
public class Adres {
private String housenumber;
}如果所有员工都有带有adres的housenumber,如果employee有adres,那么我得到了下面的例外:
由: bean类'class Employee‘上'adres.housenumber’的org.apache.commons.beanutils.NestedNullException:空属性值引起的 在org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:795) ~1.9.3.jar:1.9.3 在org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:884) ~1.9.3.jar:1.9.3 在org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:464) ~1.9.3.jar:1.9.3 在org.jxls.command.GridCommand.processBody(GridCommand.java:185) ~jxls-2.3.0.jar:? 在org.jxls.command.GridCommand.applyAt(GridCommand.java:137) ~jxls-2.3.0.jar:? 在org.jxls.area.XlsArea.applyAt(XlsArea.java:168) ~jxls-2.3.0.jar:? 在org.jxls.util.JxlsHelper.processGridTemplate(JxlsHelper.java:156) ~jxls-2.3.0.jar:?
此员工数据是从数据库中检索的,因此在传递到Excel导出之前,我无法对其进行修改。
有什么想法/帮助吗?
发布于 2018-01-11 22:27:16
当有空属性集时,当GridCommand试图计算属性的属性时,会出现问题。所以Apache PropertyUtils (由GridCommand使用)抛出一个异常。
在示例中,Employee类中的属性adres为null,因此adres.housenumber的计算会抛出一个异常。
为了避免这种行为,您可以使用Iterable对象而不是bean。这样,GridCommand就不会计算道具,而只是向Iterable对象询问它的值。
我做这个项目是为了向你展示它是如何工作的。https://github.com/LucianoZu/jxlsnofault
您可以使用IterableWrapper类来包装Employee并避免异常。
https://stackoverflow.com/questions/43304606
复制相似问题