Grails 整数的约束在列表中

Grails 整数的约束在列表中,grails,groovy,constraints,Grails,Groovy,Constraints,我需要在约束中为信用卡到期年份写一个约束 static constraints = { cardNumber(nullable:false, blank:false, creditCard:true) expiryMonth(nullable:false, range:1..12) expiryYear(nullable:false, range:(defaultExpiryYear)..(defaultExpiryYear + YEARS_TO_LIST)) } 这是

我需要在约束中为信用卡到期年份写一个约束

static constraints = {
    cardNumber(nullable:false, blank:false, creditCard:true)
    expiryMonth(nullable:false, range:1..12)
    expiryYear(nullable:false, range:(defaultExpiryYear)..(defaultExpiryYear + YEARS_TO_LIST))
}
这是我的限制

static constraints = {
    cardNumber(nullable:false, blank:false, creditCard:true)
    expiryMonth(nullable:false, range:1..12)
    expiryYear(nullable:false, range:(defaultExpiryYear)..(defaultExpiryYear + YEARS_TO_LIST))
}
其中
defaultExpiryYear=当前年份-2000
年到年列表=10年

但是,如果年份为
2095
,则此案例将失败,因为范围将变为
expiryYear(null:false,范围:95..105)
但是由于
expiryYear
对于
2105
年只有2位,它将给出
05
,它将失败


如何将其转换为该范围的进入列表?

我可能错了,但从我的观点来看,您不应该担心未来90年的事情。90年后,谁能保证信用卡仍然存在?如果仍然有信用卡,它们会有“到期年”吗?如果他们有一个有效期,如何计算


因此,很抱歉,这可能不是您期望的答案,但鉴于过去几年的发展速度,我不会以任何方式担心您的问题;)

这就是我修复它的方法。如果你有其他好主意,请发表评论 其中epiryStartYear和expiryEndYear是4位数字year expiryYear(null:false,InList:(getExpiryAngelist()))


你能把expiryYear作为一整年而不是最后两位数吗?这将更容易处理。
def static private getExpiryRangeList() {
[expiryStartYear..expiryEndYear].collect(it % 100)
}