私のフォームには1つと1つtext field
があります.dropdown list
私のフォームが最初に読み込まれるとlist of values in the dropdown list
.
を送信していてform
、フォームに が含まれている場合errors
、同じフォームを返してエラーを表示し、欠落したデータを再送信しようとしています。
しかし 、 の方法でフォームreloads
を作成すると、ドロップダウン リストに値がありません。POST
controller
私のスプリングコントローラー、
@Controller
public class FormController {
private ListStore getList;
@RequestMapping(value="/ApplicationForm.html",method=RequestMethod.GET)
public String displayForm(@ModelAttribute UserData userData,ModelMap map){
map.addAttribute("age",(ArrayList<String>)getList.ageList());
return "ApplicationForm";
}
@RequestMapping(value="/ApplicaitonForm.html",method=RequestMethod.POST)
public String displayFormDetails(@Valid UserData data,BindingResult result,ModelMap map,@RequestParam(value="name",required=true) String name,@RequestParam("age") String age){
if(result.hasErrors()){
System.out.println("It has some errors !!!!!!!!");
return "ApplicationForm";
}
map.addAttribute("name", name);
map.addAttribute("age", age);
return "DisplayFormDetails";
}
}
私のListStoreクラスは、
public class ListStore {
public List<String> ageList(){
LinkedList<String> list = new LinkedList<String>();
list.add("20 to 25 years");
list.add("25 to 35 years");
list.add("above 35 years");
return list;
}
}
dropdown
コントローラーの POST メソッドを介してフォームがリロードされたときに、リストの値を復元する方法は?
しかし map.addAttribute("age",(ArrayList<String>)getList.ageList());
、コードにasを追加することでこの問題を解決しました。
if(result.hasErrors()){
System.out.println("Form has some errors !!!!!!!!");
map.addAttribute("age",(ArrayList<String>)getList.ageList());
return "ApplicationForm";
}
しかし、これを簡単に行う他の方法はありますか?
私たちのスタックメンバーが私を助けてくれることを願っています。