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>