0

私のコントローラーには次の機能があります

@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関数で設定された3番目の値"currAns"はnullを出力します。

フォームが送信されたときにmodelAttributeが上書きされていませんか?「currAns」の値を取得するにはどうすればよいですか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

はい。フォームを送信すると、最初にModelAttributeがgetCommand_Class()メソッドによってオーバーライドされ、次にAClassのQuestionフィールドにUIに表示される値が設定されます。これは、ModelAttributeで注釈が付けられたコントローラー内のすべてのメソッドが、Modelオブジェクトを開始するために実行されるためです。

あなたはそれで逃げることができます

  • getCommand_Class()メソッドとModelAttributeAClassをshowNameFormメソッドから削除します。
  • 必要なデータを含むAClassの新しいオブジェクトを作成し、ModelMapにAClassを設定します。
  • JSPがModelオブジェクトを取得するように、ModelAndViewオブジェクトを返します。
于 2012-06-20T18:47:30.560 に答える