Kombinieren Sie die Frühjahrsprüfung und die Ruhezustandsprüfung
In diesem Artikel zeigen wir Ihnen, wie Sie die übergebenen Formularwerte mit Spring Validator und Hibernate Validator validieren (Bean Validation).
Verwendete Technologien:
-
Feder 4.1.6.FREIGABE
-
Hibernate Validator 5.1.3.Final
1. Ruhezustand überprüfen
Der Hibernate-Validator wird ausgelöst, wenn@Valid angegeben wird.
import org.hibernate.validator.constraints.NotEmpty;
public class User {
@NotEmpty
String name;
//...
}
@RequestMapping(value = "/users", method = RequestMethod.POST)
public String saveOrUpdateUser(
@ModelAttribute("userForm") @Valid User user,
BindingResult result, Model model) {
if (result.hasErrors()) {
//...
} else {
//...
}
}
2. Spring Validator
Wenn Sie den Spring-Validator über@InitBinder aktiviert haben, wird die Hibernate-Bean-Validierung ignoriert.
public class UserFormValidator implements Validator {
@Override
public boolean supports(Class> clazz) {
return User.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
User user = (User) target;
//validate something else
}
}
@Controller
public class UserController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new UserFormValidator());
}
3. Hibernate Validator + Spring Validator
Hibernate- und Spring-Validator. Entfernen Sie die@InitBinder und starten Sie den Spring Validator manuell.
@Controller
public class UserController {
/*@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new UserFormValidator());
}*/
@RequestMapping(value = "/users", method = RequestMethod.POST)
public String saveOrUpdateUser(
@ModelAttribute("userForm") @Valid User user,
BindingResult result, Model model) {
//run Spring validator manually
new UserFormValidator().validate(user, result);
if (result.hasErrors()) {
//...
} else {
//...
}
}
Im obigen Beispiel wird das übermittelte "userForm" -Modell zuerst vom Ruhezustand-Validator und dann vom Frühjahrs-Validator validiert.