简单好用的 springmvc springboot springcloud dubbo 参数校验 此框架基于 spring 开发。
<dependency> <groupId>com.github.fashionbrot</groupId> <artifactId>mars-validated</artifactId> <version>1.0.0</version> </dependency>
fileName 如果不填默认jar 包自带提示,如果需要批量自定义请按照jar 包下的valid_zh_CN.properties 修改提示语内容
@SpringBootApplication @EnableValidatedConfig(fileName = "test") // fileName 默认中文jar包自带 如需要批量自定义请自己创建 test.properties 放在自己项目中的resources 下 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
@Component @Configuration @EnableValidatedConfig(fileName = "valid_zh_CN") public class Config { }
@Controller public class DemoController { @Autowired private TestService testService; @RequestMapping("/emailCheck") @ResponseBody @Validated //注意此处 public String demo(@Email String abc,){ return testService.test(abc); } } @Controller public class DemoController { @Autowired private TestService testService; @RequestMapping("/idcardCheck") @ResponseBody @Validated public String demo(IdCardModel idCardModel){ return testService.test("ac"); } @RequestMapping("/idcardCheck2") @ResponseBody public String demo2(IdCardModel idCardModel){ return testService.test2("ac"); } } **此处支持多继承验证*** public class IdCardModel extends BaseModel{ @IdCard private String idCardModel; public String getIdCardModel() { return idCardModel; } public void setIdCardModel(String idCardModel) { this.idCardModel = idCardModel; } } @Service public class TestService{ @Validated public void test2(@IdCard String abc){ } }
拦截 ValidatedException
@RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(ValidatedException.class) @ResponseStatus(HttpStatus.OK) public RespMessage ValidationException(ValidatedException e){ return new RespMessage(-100,e.getMsg()); } }
import com.github.fashionbrot.validated.annotation.Default; @Data public class BaseModel { @Default("1") private Integer pageNo; @Default("20") private Integer pageSize; }
public class DubboProviderFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { Result result = invoker.invoke(invocation); if(result.hasException() && result.getException() instanceof ValidationException){ throw new CustomException(result.getException()); //自定义异常,全局拦截控制,或抛出 RpcException 自行拦截 } return result; } }
spring4.0 及以上
jdk1.8 及以上
Annotation | Supported data types | 作用 |
---|---|---|
NotBlank | String | 验证String 字符串是否为空 |
NotNull | String,Object,Integer,Long,Double,Short,Float,BigDecimal, BigInteger | 验证对象是否为空 |
NotEmpty | String | 验证字符串不能为空 |
AssertFalse | Boolean,boolean,String | 只能为false |
AssertTrue | Boolean,boolean,String | 只能为true |
BankCard | String | 验证银行卡 |
CreditCard | String | 验证信用卡 |
Default | Integer,Double,Long,Short,Float,BigDecimal,String | 设置默认值 |
Digits | String | 验证是否是数字 |
String | 验证是否是邮箱 | |
IdCard | String | 验证是否是身份证,验证18岁 |
Length | int,long,short,double,Integer,Long,Float,Double,Short,String | 验证长度 |
Pattern | String | 正则表达式验证 |
Phone | String | 验证手机号是否正确 |
Size | int,long,short,Integer,Long,Short | 验证大小值 |
NotEqualSize | String | 验证长度 |
### 支持自定义注解 如下:
```bash
1、实现 ConstraintValidator 此接口
2、自定义注解如下: CustomConstraintValidator.class,CustomConstraintValidator2.class 实现类可多个,至少有一个
@Documented
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {CustomConstraintValidator.class,CustomConstraintValidator2.class})
public @interface Custom {
String msg() default "com.spv.valid.Custom.msg";
int min();
}
3、代码实现
public class CustomConstraintValidator implements ConstraintValidator<Custom,String> {
@Override
public boolean isValid(Custom custom,String var1) {
/**
* 自定义方法
*/
int min=custom.min();
/**
* value
*/
System.out.println(var1);
/**
* return true 则验证成功 false 验证失败
*/
return true;
}
}
Susan and Jim had been married nine years. Like most couples they started out loving each other, but after years of increasing frustration and disappointment they lost their passion and decided to giv
主要内容:date validator:,double validator:,email validator:,expression validator:,int validator:,regex validator:,required validator:,requiredstring validator:,stringlength validator:,url validator:以下是的各类字段级和非字段级验证在Struts2列表: date validator: double valid
业务参数校验采用JSR-303方式,关于JSR-303介绍可以参考这篇博文:JSR 303 - Bean Validation 介绍及最佳实践 在参数中使用注解即可,框架会自动进行验证。如下面一个添加商品接口,它的参数是GoodsParam @Api(name = "goods.add") public void addGoods(GoodsParam param) { ... } 在G
业务参数校验采用JSR-303方式,关于JSR-303介绍可以参考这篇博文:JSR 303 - Bean Validation 介绍及最佳实践 在参数中使用注解即可,框架会自动进行验证。如下面一个添加商品接口,它的参数是GoodsParam @Open("goods.add") @RequestMapping("/goods/add") public void addGoods(GoodsPara
liquibase变更集校验和的生成是否考虑了主机名或其他问题? 我有一个问题是我在部署服务器上的特定数据库上运行了liquibase。但是,当我从本地机器(对同一个数据库)重新运行同一组changelogs时,liquibase试图重新执行变更集,因此抛出诸如“Table已经存在”之类的错误,而实际上我希望它检测到它们已经运行并跳到新的变更集。 谢了。
本文向大家介绍springboot使用校验框架validation校验的示例,包括了springboot使用校验框架validation校验的示例的使用技巧和注意事项,需要的朋友参考一下 b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可缺少的。 Spring3支持JSR-303验证框架,JSR-303 是Java
有办法做吗?