0

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

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

为什么digester 搜索名为“MyID”的属性?我根据消化器 API 将“entryID”指定为 bean 属性

谢谢 :)

最好的问候 QStorm

4

2 回答 2

1

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

编辑

抱歉,您要检查的属性是 --> "MyID"

于 2011-02-23T09:35:58.093 回答
0

[原来的]

您没有使用正确的规则来执行您的任务。

尝试改用这个:

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

提示:在你的 main 中使用例如激活 log4j BasicConfigurator.configure();。输出可能非常有用。

[编辑]

如果你想使用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
于 2010-05-04T10:44:37.577 回答