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)
}