参数效验@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) { ... }}
先到这里吧,有更好的方案望指正.
- 参数效验@Valid
- js 效验
- 正则效验
- Struts2_效验
- StringMcv valid 验证@PathVariable类型参数
- BindingResult参数,必须紧跟在@Valid参数之后。
- [原创] JAVA效验EMAIL
- c# 字符串整形效验
- SMO 备份数据效验
- 关于BIOS效验和
- 关于BIOS效验和
- 信用卡效验程序
- 效验文件的完整性
- 信用卡效验程序PHP
- JS效验各种格式
- 什么是奇偶效验
- struts2手动效验方法
- Fedora18的效验值
- Linux锐捷登录
- POJ 1562 Oil Deposits
- 持久化
- BOSS的AI(自动寻路和自动攻击)
- 最长公共子序列问题
- 参数效验@Valid
- 【BZOJ】1179 [Apio2009]Atm 强连通分量+最短路
- Robotium的测试用例导入测试时出现测试工程有感叹号
- poj1013解题报告
- leetcode 535. Encode and Decode TinyURL
- java -- SDUT 2714 骄傲的代价
- springmvc之HttpMessageConverter
- Python"函数式编程"的见证
- 判断视频是否播放完,并且弹出提示(还需要再收集些别的资料)