У меня есть рабочая форма Action и JSP, которую я использую для создания новых объектов в моем самом базовом приложении Struts 2.2.1.1. Я пытаюсь изменить приложение, чтобы повторно использовать ту же форму JSP для редактирования сущностей.
Я добавил «скрытый» тег ID и теперь получаю ошибки при отправке формы. Может кто-нибудь, пожалуйста, помогите мне?
Я гуглил эту проблему и видел, как другие публиковали подобные ошибки, но я не уверен, как ее решить.
Выдержка из трассировки стека при отправке формы:
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>
Выдержка из класса действий:
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, но не получил никакой информации, поэтому собираюсь опубликовать его и здесь. Я обновлю другой пост и наоборот, когда появится больше информации.