参数效验@Valid

最近在看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
@Validated
public class MyBean {

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

}

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值