我使用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
答案 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