自定义注解与validation结合使用案例
来源:互联网 发布:诺维斯基体测数据 编辑:程序博客网 时间:2024/05/18 02:31
案例1:
import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;import javax.validation.Constraint;import javax.validation.ConstraintValidator;import javax.validation.ConstraintValidatorContext;import javax.validation.Payload;import org.springframework.data.mongodb.core.mapping.Document;@Target({ ElementType.FIELD, ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)@Document@Constraint(validatedBy = { Name.NameChecker.class })public @interface Name {String message() default "名称不存在";Class<?>[]groups() default {};Class<? extends Payload>[]payload() default {};public static class NameChecker implements ConstraintValidator<Name, String> {@Overridepublic void initialize(Name constraintAnnotation) {}@Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {if ("111111".equals(value)) {return true;}return false;}}}
public class UserVo { @NotBlank(message = "[用户名不能为空]") @Length(max = 64, min = 6, message = "[用户名]长度6~64") @Name private String username; @NotBlank(message = "[密码不能为空]") @Length(max = 64, min = 6, message = "[密码]长度6~64") private String password; @NotNull(message = "[出生日期不能为空]") private Date birthDate;}
@RestController@RequestMapping("/v0.1/users")public class UserController { @Autowired private UserRecordService service; @RequestMapping(method = RequestMethod.POST) public UserRecord add(@RequestBody @Valid UserVo vo) { UserRecord user = new UserRecord(); BeanUtils.copyProperties(vo, user); return service.add(user); } @RequestMapping(method = RequestMethod.GET) public Items<UserRecord> list(ListParam<UserRecord> listParam){ return service.list(listParam); }}
当username取值为"111111"时通过校验,而当是其他值的时候,就会抛出校验异常。
案例2
package com.nd.social.common.validation;import com.nd.gaea.WafException;import com.nd.gaea.client.WafResourceAccessException;import com.nd.social.common.util.UCHelper;import org.apache.commons.lang3.StringUtils;import org.springframework.web.client.ResourceAccessException;import javax.validation.Constraint;import javax.validation.ConstraintValidator;import javax.validation.ConstraintValidatorContext;import javax.validation.Payload;import java.lang.annotation.*;/** * uid是否属于当前上下文租户 * 注:当被校验对象为空时,校验为通过,所以如果需要校验对象必填,请自行结合相关校验注解 * Created by Zhang JinLong(150429) on 2016-09-18. */@Target({ElementType.FIELD, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = {SameTenant.StringChecker.class, SameTenant.LongChecker.class})@Documentedpublic @interface SameTenant { String message() default "用户不存在或者不属于当前组织"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; class StringChecker implements ConstraintValidator<SameTenant, String> { @Override public void initialize(SameTenant arg0) { } @Override public boolean isValid(String uid, ConstraintValidatorContext context) { if (StringUtils.isBlank(uid)) { return true; } try { return UCHelper.isSameTenant(uid); } catch (WafResourceAccessException | WafException | ResourceAccessException e) { return false; } } } class LongChecker implements ConstraintValidator<SameTenant, Long> { @Override public void initialize(SameTenant arg0) { } @Override public boolean isValid(Long uid, ConstraintValidatorContext context) { if (null == uid) { return true; } try { return UCHelper.isSameTenant(uid.toString()); } catch (WafResourceAccessException | WafException | ResourceAccessException e) { return false; } } }}
3 ConstraintValidator
public interface ConstraintValidator<A extends Annotation, T> { // 在验证之前调用该方法 void initialize(A constraintAnnotation); // 验证方法 返回false说明没有通过校验 value的类型T可以有多种类型时,如案例2写多个校验类 boolean isValid(T value, ConstraintValidatorContext context);}
0 0
- 自定义注解与validation结合使用案例
- 自定义注解与validation结合使用案例
- 自定义hibernate validation注解
- 自定义hibernate validation注解
- 自定义hibernate validation 注解
- 自定义注解与使用
- CoreData与Mantle的结合使用案例
- 【注解】03.自定义注解案例
- 自定义标签与el表示结合使用
- spring丶自定义注解案例
- springMVC中两种validation 实现接口与注解
- Spring MVC 3.0 使用注解进行validation
- AS3自定义注解的声明与使用
- 使用自定义AnnotationTransactionAttributeSource与TX:注解驱动
- 自定义注解的学习与使用
- 自定义注解的学习与使用
- 自定义注解和aop结合使用---自定义日志记录的实现
- Tomcat结合nginx使用案例
- 进程对信号的处理
- mongodb 数据库操作--备份 还原 导出 导入
- cc-js 查看当前运行平台
- <HeadFirst_HTML5> O'REILLY_Chap.8_视频
- 【SFSafariViewController】提供完整的Web浏览体验
- 自定义注解与validation结合使用案例
- JavaEE--JavaWeb应用程序
- 使用Python连接MySQL
- <HeadFirst_HTML5> O'REILLY_Chap.9_Web存储(本地存储)
- 【DP】 noi openjudge 2.6 乘积最大
- jquery实现复选和下拉切换
- NOI2.6 8782: 乘积最大
- SmartGit的使用
- Fail to load the JNI share library"..\jdk1.7.0\\bin\..\jre\bin\client\jvm.dll"解决方法