MethodFailedException в ognl.OgnlRuntime.callAppgotiationMethod

У меня есть рабочая форма Action и JSP, которую я использую для создания новых сущностей в моих самых простых Struts 2.2.1.1 приложение. Я пытаюсь изменить приложение, чтобы повторно использовать ту же форму JSP для редактирования объектов.

Я добавил «скрытый» тег идентификатора, и теперь при отправке формы у меня возникают ошибки. Кто-нибудь может мне помочь?

I ' ve искал эту проблему в Google и видел, как другие публикуют похожие ошибки, но я не знаю, как ее решить.

Выдержка из Stack Trace при отправке формы:

2011-05-02 11:09:36,132 3198497 ["http-bio-8080"-exec-23] WARN
com.opensymphony.xwork2.ognl.OgnlValueStack - Error setting expression
'id' with value '[Ljava.lang.String;@100ac03'
ognl.MethodFailedException: Method "setId" failed for object
org.robbins.flashcards.model.Tag@1b9eb34 [name='null' ]
[java.lang.NoSuchMethodException:
org.robbins.flashcards.model.Tag.setId([Ljava.lang.String;)]
    at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1285)
    at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474)

Выдержка из JSP:

<%@ taglib prefix="s" uri="/struts-tags"%>
...
<s:form action="saveOrUpdateTag" method="post">
    <s:hidden name="id" />
    <s:textfield name="name" key="label.tag.name" size="20" />
    <s:submit label="label.flashcard.submit" align="center" />
</s:form>

Выдержка из Action Class:

public class TagAction extends FlashCardsAppBaseAction implements
ModelDriven<Tag> {

    Tag tag = new Tag();

    public Tag getTag() {
        return tag;
    }

    public void setTag(Tag tag) {
        this.tag = tag;
    }
    public String createTag() {
        ...
       }
}

Выдержка из POJO:

public class Tag  implements java.io.Serializable {


     private int id;
     private String name;

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }
...
}

Выдержка из Struts.xml

    <action name="saveOrUpdateTag"
            class="org.robbins.flashcards.presentation.TagAction"
            method="createTag">
        <result name="success" type="tiles">displaytag.tiles</result>
        <result name="input" type="tiles">tagform.tiles</result>
    </action>

К вашему сведению - я также отправил этот вопрос в список рассылки Struts-User, но не получил никаких комментариев, поэтому я собираюсь опубликовать его и здесь. Я обновлю другой пост и наоборот, когда появится больше информации.

6
задан lschin 4 May 2011 в 08:33
поделиться