2017-04-09 45 views
0

我使用这个文档例如如参照通过指定标题名和从某个对象所需要的属性来创建动态网格。 http://jxls.sourceforge.net/samples/dynamic_grid.htmlJXLS动态网格抛出空NestedNullException

但在我的情况下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; 
} 

它工作正常,如果所有员工都有一个adreshousenumber,如果员工有ADRES,然后我得到了下面的异常:

造成的:org.apache.commons.beanutils.NestedNullException:对bean类 'Employee类'

'adres.housenumber' NULL属性值

在org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:795)〜[公地BeanUtils的-1.9.3.jar:1.9.3]
在org.apache.commons.beanutils.PropertyUtilsBean .getProperty(PropertyUtilsBean.java:884)〜[commons-beanutils-1.9.3.jar:1.9.3]
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:464)〜[commons- beanutils-1.9.3.jar:1.9.3]
at org.jxls.command.GridCommand.processBody(GridCommand.java:185)〜[jxls-2.3.0.jar :?]
at org.jxls。 command.GridCommand.applyAt(GridCommand.java:137)〜[jxls-2.3.0.jar :?]
at 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导出前修改它。

任何想法/帮助吗?

回答

0

该问题是由于GridCommand在尝试在存在空属性集时评估属性的属性。所以Apache PropertyUtils(由GridCommand使用)抛出一个异常。

在您的示例中,您的Employee类中的属性adres为null,因此adres.housenumber的评估将引发异常。

为了避免这种情况,你可以使用一个迭代的对象,而不是你的bean的。通过这种方式,GridCommand不会评估道具,而只是询问Iterable对象的值。

我做这个项目展现给你它是如何工作的。 https://github.com/LucianoZu/jxlsnofault

您可以使用IterableWrapper类来包装Employee并避免该异常。