0

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>

ダイジェスター API の addSetNestedProperties(…) メソッドを使用します。

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

次の例外が発生します。

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

ダイジェスターが「MyID」という名前のプロパティを検索するのはなぜですか? ダイジェスター API に従って、Bean プロパティとして「entryID」を指定しました

ありがとう :)

よろしくお願いします QStorm

4

2 に答える 2

1

ゲッターとセッターの名前がプロパティ"entityID"の大文字または小文字であることを確認してください。おそらくゲッター名は次のようになります->"getEntityID"これを変更してみてください->"getentityID"

編集

申し訳ありませんが、確認する必要のあるプロパティは->"MyID"です。

于 2011-02-23T09:35:58.093 に答える
0

[オリジナル]

正しいルールを使用してタスクを実行していません。

代わりにこれを使用してみてください:

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

ヒント: たとえば を使用して、メインで 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 に答える