2010-04-26 27 views
0

我有一個使用Digester的問題,我希望你能幫助我。我有以下豆:apache Digester:addSetNestedProperties上的意外NoSuchMethodException

public class MyEntry { 
    private String entityID; 

    public String getEntityID() { return this.entityID; } 
    public void setEntityID(final String entityID) { this.entityID = entityID; } 
} 

及以下XML結構:

<entries> 
    <entry> 
    <MyID> 
     24309LAGH1 
    </MyID> 
    </entry> 
</entries> 

我用沼氣池API的addSetNestedProperties(...)方法:

digester.addSetNestedProperties("entries/entry", "MyID", "entryID"); 

出現以下異常:

java.lang.NoSuchMethodException: Bean has no property named MyID 

爲什麼蒸煮器搜索名爲「MyID」的屬性?我指定的「ENTRYID」作爲bean屬性accorsing蒸煮器API

謝謝:)

問候 QStorm

回答

0

[原創]

你不使用正確的規則來執行你的任務。

嘗試使用這個:

digester.addBeanPropertySetter("entries/entry/MyID", "entityID"); 

提示:通過使用例如BasicConfigurator.configure();激活你的主log4j的。輸出可能非常有用。

[編輯]

如果你想使用addSetNestedProperties

public class MyEntry { 
    private String entityID; 

    public String getEntityID() { return this.entityID; } 
    public void setEntityID(final String entityID) { this.entityID = entityID; } 
} 

new Digester().parse(myFile);

digester.addObjectCreate("entries/entry", MyEntry.class); 
digester.addSetNestedProperties("entries/entry", "MyID", "entityID"); 
//your propertyName was not the same as in your Bean Class Fields. 

而且我相信,你的例外是:

java.lang.NoSuchMethodException: Bean has no property named entryID 
1

確保getter和setter的名字一樣是大寫還是小寫你的財產「ENTITYID的可能是你的getter的名字是這樣的 - 。 > 「getEntityID」 試圖改變這個 - > 「getentityID」

編輯

對不起,物業你哈ve check to - >「MyID」