如何在spring中使用ValidationUtils
我想使用ValidationUtils,如下所示。但我不能实例化errors对象,因为errors是一个接口。您能告诉我如何在不使用验证器的情况下使其工作吗如何在spring中使用ValidationUtils,spring,spring-mvc,Spring,Spring Mvc,我想使用ValidationUtils,如下所示。但我不能实例化errors对象,因为errors是一个接口。您能告诉我如何在不使用验证器的情况下使其工作吗 if(visitorDetails==null) { Errors errors; visitorDetails=new Visitor(); ValidationUtils.rejectIfEmpty(errors, "VisitorInfo", "Selected Vi
if(visitorDetails==null)
{
Errors errors;
visitorDetails=new Visitor();
ValidationUtils.rejectIfEmpty(errors, "VisitorInfo", "Selected Visitor Details Not Found");
}
请阅读以下内容:
但是,您必须在类中实现验证接口,然后使用它验证对象,并在控制器中自动连接验证程序
这是一个例子:
public class PersonValidator implements Validator {
/**
* This Validator validates *just* Person instances
*/
public boolean supports(Class clazz) {
return Person.class.equals(clazz);
}
public void validate(Object obj, Errors e) {
ValidationUtils.rejectIfEmpty(e, "name", "name.empty");
Person p = (Person) obj;
if (p.getAge() < 0) {
e.rejectValue("age", "negativevalue");
} else if (p.getAge() > 110) {
e.rejectValue("age", "too.darn.old");
}
}
}
假设您使用的是Spring Boot
如果使用application.properties(在project/src/resources下),请将以下内容放入其中:
spring.messages.basename=validation
现在,将validation.properties(放在project/src/resources下)并将以下内容(例如)放在其中:
您的模型(本例中为AppUser)应具有:
private String useremail;
getters/setters;
创建一个组件(类),如下所示(示例):
最后但并非最不重要的一点是,在您看来,您可以这样做:
<div class="row">
<label class="col-md-3" for="useremail">Email-ID</label>
<div class="col-md-8">
<spring:bind path="useremail">
<div class="form-group ${status.error ? 'has-error' : ''}">
<form:input type="text" path="useremail" class="form-control"
placeholder="Email-id" autofocus="true"></form:input>
<form:errors path="useremail">${emailerror}</form:errors>
</div>
</spring:bind>
</div>
</div>
电子邮件ID
${emailerror}
结果应该如下所示:
您可以寻找更多验证。如果我正确理解您的问题,您希望获得错误对象。 在您的情况下,我建议采用以下方法
if(visitorDetails==null)
{
visitorDetails=new Visitor();
Errors errors = new BeanPropertyBindingResult(visitorDetails, visitorDetails.getClass().getName());
ValidationUtils.rejectIfEmpty(errors, "VisitorInfo", "Selected Visitor Details Not Found");
}
如果你需要更多的帮助,请告诉我 我可以把这个用于json post吗?或者此活页夹仅用于表单帖子?是的,使用
@RequestBody
注释,它可以与JSON正文帖子一起使用。参见示例
private String useremail;
getters/setters;
@Component
public class UserAddValidator implements Validator {
@Autowired
private UserService userService;
@Override
public boolean supports(Class<?> aClass) {
return AppUser.class.equals(aClass);
}
@Override
public void validate(Object o, Errors errors) {
AppUser user = (AppUser) o;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "useremail", "NotEmpty");
}
@RequestMapping(value = "registration", method = RequestMethod.POST)
public String registration(@ModelAttribute("userForm") AppUser userForm, BindingResult bindingResult, Model model) {
useraddValidator.validate(userForm, bindingResult);
if (bindingResult.hasErrors()) {
return "userregistration";
}
userService.save(userForm);
model.addAttribute("success", "User " + userForm.getUsername() + " created successfully");
return "success";
}
<div class="row">
<label class="col-md-3" for="useremail">Email-ID</label>
<div class="col-md-8">
<spring:bind path="useremail">
<div class="form-group ${status.error ? 'has-error' : ''}">
<form:input type="text" path="useremail" class="form-control"
placeholder="Email-id" autofocus="true"></form:input>
<form:errors path="useremail">${emailerror}</form:errors>
</div>
</spring:bind>
</div>
</div>
if(visitorDetails==null)
{
visitorDetails=new Visitor();
Errors errors = new BeanPropertyBindingResult(visitorDetails, visitorDetails.getClass().getName());
ValidationUtils.rejectIfEmpty(errors, "VisitorInfo", "Selected Visitor Details Not Found");
}