Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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 从JSP中的列表填充用户定义的对象_Java_Jsp_Struts2_Ognl - Fatal编程技术网

Java 从JSP中的列表填充用户定义的对象

Java 从JSP中的列表填充用户定义的对象,java,jsp,struts2,ognl,Java,Jsp,Struts2,Ognl,在我的动作课上,我有一系列问题。我希望从视图中填充 public class MyQuizTest extends ActionSupport { public String addItemsToTemplate(){ List<Question> q= myQuestions; System.out.println(q); return "success"; } public List<Qu

在我的动作课上,我有一系列问题。我希望从视图中填充

public class MyQuizTest extends ActionSupport {

    public String addItemsToTemplate(){
         List<Question>  q=  myQuestions;
         System.out.println(q);

         return "success";
   }

    public List<Question> getMyQuestions() {
        return myQuestions;
    }

    public void setMyQuestions(List<Question> myQuestions) {
        this.myQuestions = myQuestions;
    }
    private List<Question> myQuestions;
}
这是处理这个问题的表单

<form method = "GET" action = "addItemsToTemplate">
    <s:iterator value = "myQuestions"  status="key" var = "questionItem">
    <s:checkbox  name = "myQuestions[%{#key.index}].chosen"   label="Check Me for testing"/>        
</s:iterator>
</form>

此方法处理表单

public String addItemsToTemplate(){
            List<Question>  q=  myQuestions;
            System.out.println(q);

            return "success";
        }
公共字符串addItemsToTemplate(){
列表q=我的问题;
系统输出println(q);
返回“成功”;
}
提交后,
myQuestions
返回一个
null
。为什么呢?
我想确定是否选择了相应的问题。

在操作层上,您在哪里填充myQuestions

如果您没有在任何地方填充它,那么当在JSP上遇到myQuestions变量时,它是空的/null,因此我认为流不会进入迭代器循环

<s:iterator value = "myQuestions"  status="key" var = "questionItem">
    <s:checkbox  name = "myQuestions[%{#key.index}].chosen"   label="Check Me for testing"/>        
</s:iterator>


现在,如果您提交表单,那么myQuestions对象肯定没有与JSP中的任何内容进行映射,因此是空的,我不是Struts 2用户,但似乎您误用了
标记。请参阅以相应地修复您的代码。您的
myQuestions
变量返回
null
,因为您没有在任何地方初始化它(如答案所示)。但它已从另一个操作初始化。再次说明,我不是Struts 2用户。此外,我们无法想象为了使项目正常工作,您还有哪些其他类/方法。请务必发布相关且必要的代码片段,以帮助这里的人们阅读、理解和复制您的问题,从而为您提供好的答案。Struts 2是基于操作的框架,这意味着以前初始化的内容将在新请求中消失。因此,您必须将对象存储在某个位置(DB?Session?),以便将它们与其他操作一起重用。我正在从不同的方法将其填充到同一操作类的某个位置。
<s:iterator value = "myQuestions"  status="key" var = "questionItem">
    <s:checkbox  name = "myQuestions[%{#key.index}].chosen"   label="Check Me for testing"/>        
</s:iterator>