Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在spring中使用ValidationUtils_Spring_Spring Mvc - Fatal编程技术网

如何在spring中使用ValidationUtils

如何在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

我想使用ValidationUtils,如下所示。但我不能实例化errors对象,因为errors是一个接口。您能告诉我如何在不使用验证器的情况下使其工作吗

     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");
}