apache Digester:addSetNestedProperties上出现意外的NoSuchMethodException

时间:2010-04-26 09:07:23

标签: java apache-commons-digester

我使用Digester时遇到问题,希望你能帮助我。我有以下Bean:

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>

我使用了digester API的addSetNestedProperties(...)方法:

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

发生以下异常:

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

为什么digester搜索名为“MyID”的属性?我将“entryID”指定为符合digester API的bean属性

谢谢:)

祝你好运 QStorm

2 个答案:

答案 0 :(得分:1)

确保getter和setter的名称类似于您的属性“entityID”的大写或小写。可能您的getter名称是这样的 - &gt;“getEntityID”尝试为此更改 - &gt;“getentityID”

修改

对不起,您需要检查的属性是 - &gt; “MYID”

答案 1 :(得分: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