apache Digester: неожиданное исключение NoSuchMethodException для addSetNestedProperties - PullRequest
0 голосов
/ 26 апреля 2010

У меня проблема с использованием Дигестера, и я надеюсь, что вы мне поможете. У меня есть следующий Боб:

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>

Я использую метод addSetNestedProperties (…) API-интерфейса метантенка:

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

Возникает следующее исключение:

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

Почему дайджест ищет свойство с именем «MyID»? Я указал «entryID» как свойство бина согласно API-метке

Спасибо:)

С наилучшими пожеланиями QStorm

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Убедитесь, что имена получателей и установщиков, такие как прописные или строчные буквы вашего свойства "entityID. Возможно, ваше имя получателя выглядит следующим образом ->" getEntityID "попробуйте изменить для этого ->" getentityID "

Редактировать

Извините, свойство, которое вы должны проверить -> "MyID"

0 голосов
/ 04 мая 2010

[оригинал]

Вы не используете правильное правило для выполнения своей задачи.

Попробуйте использовать это вместо:

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
...