您提到的用於驗證表單的方法是您可用的幾個選項之一。
除了您建議的方法之外,您可能還希望使用適當的實現(例如Hibernate Validator)使用JSR-303註釋進行調查。有很多如何完成這個的例子。
對於彈簧驗證方法的基本步驟是:
- 創建類充當結合對象,
- 綁定對象傳遞了這樣的一個實例的視圖中的控制器的字段在使用形式標籤庫
- 在它處理表單提交的控制器的方法的視圖中,使用註釋
@ModelAttribute
向表單數據綁定到綁定對象
- 使用定製檢驗對象(可能
@Autowired
到控制器)來執行驗證
繼承人一個簡單的例子控制器:
@Controller
public class PersonController {
@Autowired
private PersonValidator personValidator;
@RequestMapping(value="person/form", method = RequestMethod.GET)
public ModelAndView form() {
// Instance of binding object
Person person = new Person();
// Create ModelAndView which displays personForm view
ModelAndView mav = new ModelAndView("person/form");
// Put our binding object in the model
mav.getModel().put("person", person);
return mav;
}
@RequestMapping(value="person/form", method = RequestMethod.POST)
public String save(@ModelAttribute Person person, BindingResult errors, Model model) {
// Call our custom validator and put errors into BindingResult
personValidator.validate(person, errors);
// If we have validation errors
if (errors.hasErrors()) {
// Show form with errors
return "person/form";
}
// Otherwise show some success page
return "person/success";
}
}
我想的東西是困惑我是這裏的 「@ModelAttribute人的人」 是來自(哪裏?我使用velocity,所以不能使用JSP taglib(如果這樣做的話)。我應該只是使用@RequestParam(「firstname」)... @RequestParam(「lastname」)...這樣並在我的控制器中構建一個Person對象?然後按照所示的其餘步驟? BindingResult錯誤的同樣的問題 – 2010-11-05 10:01:52
嗯,我沒有意識到@ModelAttribute函數的具體細節,我現在無法檢查,但我猜想,由於表單JSP taglib輸出純HTML,所以有一些東西在Spring框架內負責實際的綁定。 Spring文檔建議有一些Velocity綁定宏可用,請參閱http://static.springsource.org/spring/docs/3.0.0.M4/spring-framework-reference/html/ch16s04.html – 2010-11-05 10:12:54