java 集成hibernate valitator校验
来源:互联网 发布:淘宝店铺海报尺寸 编辑:程序博客网 时间:2024/06/01 14:24
今天在项目上加上了校验,想来想去也没啥好用的,只能选用hibernate-validator了:
废话不多说,直接上代码:
如果是Maven项目请导入下面几句话:
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator-annotation-processor</artifactId></dependency> <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> </dependency>
用默认的校验的话,导入上面的就够了,如果要自定义注解,请继续导入:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.1.3.Final</version> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>javax.el-api</artifactId> <version>2.2.4</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.el</artifactId> <version>2.2.4</version> </dependency>
非Maven项目请导入3个包:
hibernate_validator-4.3.1.Final.jar
validation-api-1.0.0GA.jar
hibernate-validator-annotation-processor-4.3.1.Final.jar
搞定,jar包都导入完毕,开始动手做了,默认的注解直接在实体对象@NotNull啥的就OK了,我就不讲了,直接讲自定义校验:
定义:
1.声明校验注解
package com.sf.sgs.user.core.request.util.validation.constraints;import static java.lang.annotation.ElementType.ANNOTATION_TYPE;import static java.lang.annotation.ElementType.FIELD;import static java.lang.annotation.ElementType.METHOD;import static java.lang.annotation.RetentionPolicy.RUNTIME;import java.lang.annotation.Documented;import java.lang.annotation.Retention;import java.lang.annotation.Target;import javax.validation.Constraint;import javax.validation.Payload;import com.sf.sgs.user.core.request.util.validation.constraints.validator.MaxValidator;@Target({ METHOD, FIELD, ANNOTATION_TYPE })@Retention(RUNTIME)@Constraint(validatedBy = MaxValidator.class)@Documented/** * 最大值 * @author leantaot * */public @interface Max {String message() default "超过最大值"; //默认异常信息 int value() default 30; //默认最大值String errorCode() default "01000000001X"; //默认异常码<pre name="code" class="java"><span style="white-space:pre"></span>//以下这两个参数必须加Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};}2.实现校验接口
package com.sf.sgs.user.core.request.util.validation.constraints.validator;import javax.validation.ConstraintValidator;import javax.validation.ConstraintValidatorContext;import com.sf.sgs.user.core.request.util.validation.constraints.Max;public class MaxValidator implements ConstraintValidator<Max, Integer>{private int maxValue = 0;@Overridepublic void initialize(Max max) {try {maxValue = max.value();} catch (Exception e) {}}@Overridepublic boolean isValid(Integer value, ConstraintValidatorContext context) {if (value != null && value <= maxValue) {return true;} else{return false;}}}3.如果你不想让他输出默认的信息,请在上面的return false前加上:
context.disableDefaultConstraintViolation(); // 禁用默认值context.buildConstraintViolationWithTemplate("自定义输入信息").addConstraintViolation();
package com.sf.sgs.user.core.service.impl.util.validation;import java.util.Set;import javax.validation.ConstraintViolation;import javax.validation.Validation;import javax.validation.Validator;import javax.validation.ValidatorFactory;import org.apache.commons.collections.CollectionUtils;import com.sf.sgs.user.core.service.impl.util.PrintLogUtil;public class HibernateValidation {public static void main(String[] args) { Userss u = new Userss();u.setAge(1);u.setName(null);u.setPwd("123");HibernateValidation.validation(u); } /** * 校验对象数据 * @param target 对象 * @return String */public static <T> void validation(T target){try {ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set<ConstraintViolation<T>> set = validator.validate(target); if(CollectionUtils.isNotEmpty(set)){ if(set.size() > 0){ for (ConstraintViolation<T> cons : set) { System.out.println("字段:"+cons.getPropertyPath()); System.out.println("值:"+cons.getInvalidValue()); System.out.println("异常信息:"+cons.getMessage()); } } }} catch (Exception e) {PrintLogUtil.printErrorLog(HibernateValidation.class, e);}}}
完成
0 0
- java 集成hibernate valitator校验
- java校验API(Hibernate Validator)
- EXT 如何与一些java 框架集成(关于Ext校验)
- hibernate集成
- 身份证号码校验 java校验
- Hibernate-validator校验框架
- Hibernate-validator校验框架
- Hibernate Validator参数校验
- Hibernate-validator校验框架
- Hibernate-validator校验框架
- SpringMvc-Hibernate校验
- SpringBoot-Hibernate校验
- Hibernate-validator校验框架
- Struts集成的校验方式
- SpringMVC 集成JSR303数据校验
- SpringMVC集成Hibernate Validator进行注解式的参数校验——让代码更少、更加专注于业务逻辑
- hibernate validator组校验,同时校验多个组
- 项目集成hibernate后,启动时报错java.lang.NoSuchMethodError
- snmpwalk命令常用方法
- 感知哈希算法(Perceptual hash algorithm)
- XMPP
- Quartz的使用及与spring集成使用
- UIViewController
- java 集成hibernate valitator校验
- Python 的OS 模块(一)
- Android之菜单选项子菜单submenu(二)
- 创建型:设计模式之工厂模式(一)
- GC算法精解(复制算法与标记/整理算法) 目前的两种主流算法,基于标记清除算法而来
- ExtJs树展开到指定节点
- Flask中session的用法
- jeecms修改端口号
- OpenStack设置创建实例超过253