Java 使用Struts 2从JSP重新填充ArrayList
这是我用来重新填充Java 使用Struts 2从JSP重新填充ArrayList,java,list,jsp,struts2,ognl,Java,List,Jsp,Struts2,Ognl,这是我用来重新填充ArrayList <form method = "POST" action = "addItemsToTemplate"> <s:iterator value = "myQuestions" var = "quizItem" status="key"> <s:textfield name = "quizItem.question"/> </s:iterator> <input t
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>
和System.out.println(myQuestions)代码>打印空列表。但是在提交表单之前,myQuestions
已经通过此方法从另一个方法填充了populateQuestions()
Where myQuestions is a List of Question Objects.
upon submission this gives me an error
因为它是问题对象的列表,所以您试图用字符串填充问题对象。请检查是否已定义转换器以将字符串转换为有问题的字符串,并在xwork-conversion.properties文件中指定了转换器
System.out.println(myQuestions); prints an empty list.
而不是这样做
private List<Question> myQuestions = new ArrayList<Question>();
private List myQuestions=new ArrayList();
这样做
private List<Question> myQuestions;
私人列表我的问题;
提交表单时,将创建Action类的新对象,并在每次提交时重新初始化实例变量“myQuestions”
希望这有帮助:)
因为它是问题对象的列表,所以您试图用字符串填充问题对象。请检查是否已定义转换器以将字符串转换为有问题的字符串,并在xwork-conversion.properties文件中指定了转换器
System.out.println(myQuestions); prints an empty list.
而不是这样做
private List<Question> myQuestions = new ArrayList<Question>();
private List myQuestions=new ArrayList();
这样做
private List<Question> myQuestions;
私人列表我的问题;
提交表单时,将创建Action类的新对象,并在每次提交时重新初始化实例变量“myQuestions”
希望这有帮助:)
在类上设置'quizItem.question'时发现意外异常
quick.actions.QuizTemplateAction:设置表达式时出错
“quizItem.question”和值“[Ljava.lang.String;@1b3409f”
您正试图将所有问题(属性)描述作为列表
发送到第一个问题(对象),因为您没有指定索引(正如您在其他问题中正确使用
。?!)
改变这个
<s:textfield name = "quizItem.question"/>
对此
<s:textfield name = "quizItem[%{#key.index}].question"/>
将单个字符串
发送到每个对应的问题
对象,而不是将列表
发送到第一个问题
对象
在类上设置'quizItem.question'时发现意外异常
quick.actions.QuizTemplateAction:设置表达式时出错
“quizItem.question”和值“[Ljava.lang.String;@1b3409f”
您正试图将所有问题(属性)描述作为列表
发送到第一个问题(对象),因为您没有指定索引(正如您在其他问题中正确使用
。?!)
改变这个
<s:textfield name = "quizItem.question"/>
对此
<s:textfield name = "quizItem[%{#key.index}].question"/>
将单个字符串
发送到每个对应的问题
对象,而不是将列表
发送到第一个问题
对象。提交表单Struts2时,使用与字段名同名的参数。这些参数由将值设置为值的操作填充ck
。由于操作位于堆栈顶部,因此将设置其属性
在您的操作中,您有一个列表
,但传递的是列表
集合-如果无法确定对象类型,则假定它是一个字符串
,并创建一个新的数组列表
要解决此问题,请使用如下索引属性名称
<s:textfield name = "myQuestions[%{#key.index}].question"/>
提交表单时,Struts2使用与字段名同名的参数。这些参数由填充到操作,该操作将值设置为值堆栈的值。由于操作位于堆栈顶部,因此将设置其属性
在您的操作中,您有一个列表
,但传递的是列表
集合-如果无法确定对象类型,则假定它是一个字符串
,并创建一个新的数组列表
要解决此问题,请使用如下索引属性名称
<s:textfield name = "myQuestions[%{#key.index}].question"/>
顺便说一句,Question是一个抽象类,但当我做这个私有列表时,myQuestions=new ArrayList();它给我一个空值如果你需要JSP中填充的值,你需要简单地列出我的问题;现在请检查JSP流是否进入迭代器标记内部,方法是在迭代器标记内部打印一个伪值。如果你使用的是eclipe,那么ctrl+shift+R将打开一个窗口,你可以在其中键入xwork转换,并显示路径。如果不是pre发送到web模块的resources文件夹中,然后您需要添加一个xwork文件。我添加了虚拟值,实际上有一个内容。我没有任何xwork转换思想。添加它,然后为相应的问题子类对象创建一个转换器,并将其条目添加到xwork中。顺便说一句,问题是一个抽象类,但当我这样做时私有列表myQuestions=new ArrayList();它给我一个空值如果你需要JSP中填充的值,你需要简单地列出我的问题;现在请检查JSP流是否进入迭代器标记内部,方法是在迭代器标记内部打印一个伪值。如果你使用的是eclipe,那么ctrl+shift+R将打开一个窗口,你可以在其中键入xwork转换,并显示路径。如果不是pre发送到web模块的resources文件夹中,然后您需要添加一个xwork文件。我添加了虚拟值,其中实际上有一个内容。我没有任何xwork转换思想添加它,然后为相应的问题对象子类创建一个转换器,并将其条目添加到xwork中。