我在这里有一个非常幼稚的概念问题需要澄清。在我的应用程序中,我目前使用 JSR 303 Hibernate Validator 来验证带有 @NotBlank 和 @NotNull 注释的域模型,例如检查用户名、密码等。
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;
...
但是为了验证现有用户名之类的域逻辑,我仍在使用 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 Validator 而根本不使用 Spring Validator 来验证域逻辑?