它應該這樣工作。 (form(xmlns:form =「http://www.springframework.org/tags/form」))輸入字段應該預先填入您放置在控制器中的命令對象中的值,在該控制器中呈現jsp頁面的結果。
你可能錯過了填充模型。
@RequestMapping(value = "/xxx", params = "form", method = RequestMethod.GET)
public ModelAndView updateForm() {
...
StudentBean studentBean = new StudentBean();
studentBean.setFName("Ralph");
return new ModelAndView("updateForm", "studentBean", studendBean);
}
@RequestMapping(value = "/xxx", method = RequestMethod.POST)
public ModelAndView update(@Valid StudentBean studentBean,
final BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return new ModelAndView("updateForm", "studentBean", studendBean);
} else {
...
return new ModelAndView(new RedirectView("/finished", true));
}
}
所以最終需要兩種方法,一種填充形式/命令/豆腐初始和第二處理用戶輸入。
順便說一句:術語「Bean」對於那種用來填充表單幷包含請求的對象來說很少見。 (在JSF中,它被稱爲(Managed)Bean,但是使用JSP(這是命令庫,與基於組件的JSF沒有可比性)。它也不是Spring-Bean,因爲它不是Spring管理對象。我個人對於那種對象使用術語「命令」(根據彈簧參考:15.3.2.3 Supported handler method arguments and return types「將命令或表單對象綁定參數:...」)