在我的控制器中,我有以下功能
@ModelAttribute("ABeanCV")
public AClass getCommand_Class()
{
AClass ABean=new AClass();
ABean.setQuestions(new AutoPopulatingList(ABean.class));
return ABean;
}
@RequestMapping(method = RequestMethod.GET, value="/AFormCV.htm")
protected String showNameForm(@ModelAttribute("ABeanCV") AClass command_Class,ModelMap model)
{
command_Class.getQuestions().get(52).setAns("123456789");
command_Class.getQuestions().get(52).setPrevAns("987654321");
model.addAttribute("Question",as);
command_Class.getQuestions().get(52).setCurrAns("435678543");
model.addAttribute("Question",as);
return "ACV";
}
@RequestMapping(method = RequestMethod.POST, value="/submitQuestionForm.htm")
protected String submitNameForm(@ModelAttribute("ABeanCV") AClass commandClassCV, ModelMap model )
{
System.out.println("Ans wer to q 52 : "+commandClassCV.getQuestions().get(52).getAns());
System.out.println("PREv Ans wer to q 52 : "+commandClassCV.getQuestions().get(52).getPrevAns());
System.out.println("PREv Ans wer to q 52 : "+commandClassCV.getQuestions().get(52).getCurrAns());
model.addAttribute("Question",as);
return "ACV";
}
我的JSP
<form:form method="post" name="classForm" id="classForm" modelAttribute="ABeanCV" commandName="ABeanCV" action="submitQuestionForm.htm">
here I have only 2 input values " ans and prevAns " but in my showNameForm function I am setting values for " ans , prevAns and currAns " input values
当我在表格2中运行项目时,文件显示正常。当我尝试在我的submitNameForm函数中打印3个值时,提交表单后,只打印那些显示在表单上的值,即。 “ans和prevAns”。在showNameForm函数中设置的第三个值“currAns”打印为null。
提交表单时是否覆盖了modelAttribute?我怎样才能获得“currAns”的价值?
非常感谢任何帮助。
答案 0 :(得分:0)
是。当您提交表单时,第一个ModelAttribute将被getCommand_Class()方法覆盖,然后AClass中的Question字段将使用UI上显示的值进行设置。这是因为使用ModelAttribute注释的控制器中的所有方法都会被执行,以便初始化Model对象。
你可以通过
逃脱它