Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Struts 2从JSP重新填充ArrayList_Java_List_Jsp_Struts2_Ognl - Fatal编程技术网

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中。