【问题标题】:constraints inlist for integer整数约束列表
【发布时间】:2013-03-09 04:19:17
【问题描述】:

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

这是我的限制

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 = Current Year - 2000YEARS_TO_LIST = 10 years

但是如果年份是2095,这种情况将失败,因为范围将变为expiryYear(nullable:false, range:95..105) 但由于expiryYear 的年份只有两位数 2105 它会给出05 并且它会失败。

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

【问题讨论】:

  • 您能否将 expiryYear 捕获为全年而不是最后 2 位数字?处理起来会容易得多。

标签: grails groovy constraints


【解决方案1】:

我可能是错的,但从我的角度来看,你不应该担心大约 90 年后的事情。 90 年后——谁能保证还有信用卡?如果还有信用卡,他们会有“到期年”吗?如果他们有一个到期日,它是如何计算的?

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

【讨论】:

    【解决方案2】:

    这就是我修复它的方法,如果您有任何其他好的想法,请发表评论 其中 epiryStartYear 和 expiryEndYear 是 4 位数年份 expiryYear(nullable:false, InList:(getExpiryRangeList()))

    def static private getExpiryRangeList() {
    def  yearList = []
    (expiryStartYear..expiryEndYear).each {
        yearList << it % 100
    }
    yearList
    }
    

    或者我可以做

    def static private getExpiryRangeList() {
    [expiryStartYear..expiryEndYear].collect(it % 100)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2022-01-23
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多