这是我用来重新填充的表格 ArrayList
ArrayList
<form method = "POST" action = "addItemsToTemplate"> <s:iterator value = "myQuestions" var = "quizItem" status="key"> <s:textfield name = "quizItem.question"/> </s:iterator> <input type = "submit" value = "submit"/> </form>
这是动作课
public class QuizTest extends ActionSupport{ public String execute(){ List<Question> q= myQuestions; System.out.println(myQuestions); return "success"; } public String populateQuestions(){ //more code here } public void setMyQuestions(List<Question> myQuestions) { this.myQuestions = myQuestions; } private List<Question> myQuestions = new ArrayList<Question>(); }
myQuestions问题对象列表在哪里。提交后,这给了我一个错误
myQuestions
Unexpected Exception caught setting 'quizItem.question' on 'class quiz.actions.QuizTemplateAction: Error setting expression 'quizItem.question' with value '[Ljava.lang.String;@1b3409f'
并System.out.println(myQuestions);打印一个空列表。但在提交表单之前,myQuestions已经通过此方法从另一个中填充 populateQuestions()了
System.out.println(myQuestions);
populateQuestions()
意外异常捕获到在类quiz.actions.QuizTemplateAction上设置’quizItem.question’:设置值为’[Ljava.lang.String; @ 1b3409f’的表达式’quizItem.question’时出错
您正在尝试将所有问题(属性)描述都以形式发送到第一个问题(对象)中List<String>,因为您没有指定索引(如您<s:property/>在其他问题中正确使用的那样…?!)。
List<String>
<s:property/>
改变这个
<s:textfield name = "quizItem.question"/>
对此
<s:textfield name = "quizItem[%{#key.index}].question"/>
String向每个对应Question对象发送单个消息,而不是List<String>向第一个Question对象发送消息。
String
Question