参数效验@Valid

来源:互联网 发布:ip地址是阿里云 编辑:程序博客网 时间:2024/06/14 07:53

最近在看spring boot的文档(http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/),里面提到了使用@Valid 参数验证,这个注解比较实用,这里介绍一下如何在spring-boot中使用:

import javax.validation.Valid;import com.framework.core.valid.ValidatorResultHandler;import org.springframework.validation.BindingResult;public Boolean save( @RequestBody @Valid UserInfo UserInfo,                                  BindingResult br){        ValidatorResultHandler.handle(br);        ....//省略若干代码

这里注意我们要检查的是自己封装的userInfo中的属性,这里需要对userInfo进行配置,这里需要使用注解下面对注解进行介绍:
实际例子:
@size (min=3, max=20, message=”用户名长度只能在3-20之间”)
@size (min=6, max=20, message=”密码长度只能在6-20之间”)
@pattern (regexp=”[a-za-z0-9._%+-]+@[a-za-z0-9.-]+\.[a-za-z]{2,4}”, message=”邮件格式错误”)
@Length(min = 5, max = 20, message = “用户名长度必须位于5到20之间”)
@Email(message = “比如输入正确的邮箱”)
@NotNull(message = “用户名称不能为空”)
@Max(value = 100, message = “年龄不能大于100岁”)
@Min(value= 18 ,message= “必须年满18岁!” )
@AssertTrue(message = “bln4 must is true”)
@AssertFalse(message = “blnf must is falase”)
@DecimalMax(value=”100”,message=”decim最大值是100”)
@NotNull(message = “身份证不能为空”)
@Pattern(regexp=”^(\d{18,18}|\d{15,15}|(\d{17,17}[x|X]))$”, message=”身份证格式错误”)

Demo实例:

public class userInfo{    @NotEmpty(message="姓名不能为空")    private String name;    @NotEmpty(message="密码不能为空")    @Length(min=6,message="密码长度不能小于6位")    private String password;//省略get set}

这里特别介绍一下我们封住的ValidatorResultHandler类:

public class ValidatorResultHandler {    public ValidatorResultHandler() {    }    public static void handle(BindingResult result) {        if(result.hasErrors()) {            String message = "";            List list = result.getAllErrors();            ObjectError objectError;            for(Iterator i$ = list.iterator(); i$.hasNext(); message = message + objectError.getDefaultMessage() + ";  ") {                objectError = (ObjectError)i$.next();            }            throw new BusinessException(ReturnType.ParamIllegal, message);        }    }

ReturnType 类:

public enum ReturnType {    Success("0", "成功"),    Error("-1", "错误"),    Unknown("50", "未知异常"),//省略....    private String code;    private String type;    private ReturnType(String code, String type) {        this.code = code;        this.type = type;    }    public String getCode() {        return this.code;    }    public String getType() {        return this.type;    }}

做一下补充,之前讲了如何验证自己封装的bean,还有对基础类型进行验证呢?

@Service@Validatedpublic class MyBean {    public Archive findByCodeAndAuthor(@Size(min = 8, max = 10) String code,            Author author) {        ...    }}

先到这里吧,有更好的方案望指正.

0 0
原创粉丝点击