我有一個非常天真的概念性問題來澄清。在我的應用我目前使用JSR 303 Hibernate驗證確認與@NotBlank和@NotNull註解域模型,如檢查用戶名,密碼等使用JSR-303驗證器而不是Spring驗證器
public class Admin {
private Long id;
@NotBlank(message = "Username should not be null")
private String username;
@NotBlank(message = "Username should not be null")
private String password;
...
但對於驗證域邏輯類似現有的用戶名,我「M仍然使用Spring的Validator接口
@Component
public class AdminValidator implements Validator {
...
@Override
public void validate(Object target, Errors errors) {
Admin admin = (Admin) target;
if (usernameAlradyExist())){
errors.rejectValue("username", null, "This user already exist's in the system.");
}
}
在控制器中,我同時使用
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(@Valid @ModelAttribute("admin") Admin admin, BindingResult bindingResult,) {
validator.validate(admin, bindingResult);
if (bindingResult.hasErrors()) {
return REGISTER_ADMIN.getViewName();
}
是否可以只使用Hibernate的驗證,而不是都使用Spring驗證器驗證域邏輯?
謝謝,那就是我一直在尋找的:-) – tintin 2012-07-08 10:28:56
@tintin:很高興我能幫忙:) – xyz 2012-07-08 10:32:32