java bean 注解验证_java – 验证日期 – Bean验证注释 – 使用...

@Past仅支持日期和日历,但不支持字符串,因此没有日期格式的概念.

您可以创建一个自定义约束,例如@DateFormat,它可以确保给定的字符串符合给定的日期格式,并使用如下约束实现:

public class DateFormatValidatorForString

implements ConstraintValidator {

private String format;

public void initialize(DateFormat constraintAnnotation) {

format = constraintAnnotation.value();

}

public boolean isValid(

String date,

ConstraintValidatorContext constraintValidatorContext) {

if ( date == null ) {

return true;

}

DateFormat dateFormat = new SimpleDateFormat( format );

dateFormat.setLenient( false );

try {

dateFormat.parse(date);

return true;

}

catch (ParseException e) {

return false;

}

}

}

请注意,SimpleDateFormat实例不能存储在验证程序类的实例变量中,因为它不是线程安全的.或者,您可以使用commons-lang项目中的FastDateFormat类,它可以安全地从多个线程并行访问.

如果你想为@Past添加对字符串的支持,你可以通过实现一个实现ConstraintValidator< Past,String>的验证器来实现.并使用XML constraint mapping进行注册.但是,无法指定预期的格式.或者,您可以实现另一个自定义约束,例如@PastWithFormat.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值