validation注解及自定义注解

摘要:
˃[]groups()默认值{};类别˂?

Bean Validation 中内置的 constraint:

  • @Null被注释的元素必须为 null
  • @NotNull被注释的元素必须不为 null
  • @AssertTrue被注释的元素必须为 true
  • @AssertFalse被注释的元素必须为 false
  • @Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @DecimalMax(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Size(max=, min=)被注释的元素的大小必须在指定的范围内
  • @Digits(integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Past被注释的元素必须是一个过去的日期
  • @Future被注释的元素必须是一个将来的日期
  • @Pattern(regex=,flag=)被注释的元素必须符合指定的正则表达式

Hibernate Validator 附加的 constraint:

  • @NotBlank验证字符串非null,且长度必须大于0
  • @Email被注释的元素必须是电子邮箱地址
  • @Length(min=,max=)被注释的字符串的大小必须在指定的范围内
  • @NotEmpty被注释的字符串的必须非空
  • @Range(min=,max=,message=)被注释的元素必须在合适的范围内

自定义注解

package com.nf147.ssm.annotation;

import java.lang.annotation.*;
import java.util.Arrays;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Status {

    String message() default "没有这个类型,请重新选择";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
class StatusValidator implements ConstraintValidator<Status,String>{

    @Override
    public void initialize(Status constraintAnnotation) {

    }

    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
//判断传入的值 s 是否是集合里的值 return Arrays.asList("create","shop").contains(s); } }

之后,在实体类对于指端上加上 @Status 就可以了

免责声明:文章转载自《validation注解及自定义注解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux设备树语法详解frameset框架弹出层下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

N1盒子刷Armbian整理

我买了一把亚美尼亚刷子,记录了投掷的过程。本文基于《斐济N1–完美机器刷臂教程》和《斐济N1刷臂5.64》,结合自身实际操作中遇到的问题。为了使斐济N1的所有硬件都能被armbian正常调度,需要将一组dtb文件适配到斐济N1。目前,斐济N1的dtb文件已被armbian包含在官方源代码库中,但Linux在使用时的负载将非常高,因此热心的网友为ARMBIAN...

html,js简单保存textarea换行格式

有时我们需要在提交表单时保存html标记,但textarea不保存换行信息,因此我们需要使用js保存HTM标记,例如textarea的换行。˃˃g、 “”);这只是一个允许在js中保留HTML文本区域中的换行符和其他格式的模型。你需要开发它来满足你的需求。希望岑溪网站开发分享的内容对您有所帮助!...

winform中 跨线程启动UI

C#的winform程序中,是不可以从UI窗口主线程之外的线程去直接操作窗口控件的。确切的解释是,不能从创建控件的线程以外的线程去处理控件的操作,比如修改属性等。方法二,通过Control.Invoke调用委托的方式来执行。...

【转】 中兴OLT-C300常用命令

在当前的C220版本中,ONU类型名称在GPON和EPON中应该是唯一的。这里我们使用“ZTEG-F620”。ZXAN#ponZXAN#onu-typegponZTEG-F620描述4ETH,2POTSZXAN#onu-ifZTEG-F620eth_0/1-4ZXAN#onon-ifZTEG-F620pots_0/1-2ZXAN#on u type attr...

通过 java的 esl 连接 freeswitch

--所有ip都能通过esl连接到freeswitch--˃4.reloadmod_event_socket5.通过java的esl连接fs服务器三、报错[WARNING]mod_event_socket.c:2641IPx.x.x.xRejectedbyacl"loopback.auto"四、以前版本按照步骤二操作完就可以了,现在报错了。世界变化的太快。--...

halo项目源码本地部署解决方案

找不到build-info.properties文件(运行时)Beanmethod'buildProperties'in'ProjectInfoAutoConfiguration'notloaded@ConditionalOnResourcedidnotfindresource'${spring.info.build.location:classpath:M...