标签: grails-validation

用于域类的Grails自定义验证器

我有一个限制,所以只能 ConfigurationHolder.config.support.reminder.web.person.max存储对象.我没有找到如何添加与特定属性无关的验证器.所以现在我以这种方式实现它.你们有什么想法让它变得更好吗?

package support.reminder.web

import org.codehaus.groovy.grails.commons.ConfigurationHolder;

class Person {

    String firstName
    String lastName
    String email
    Date lastDutyDate

    static constraints = {
        firstName(blank: false)
        lastName(blank: false)
        email(blank: false, email: true)
        lastDutyDate(nullable: true)
        id validator: {val ->
        if (val)
            Person.count() <= ConfigurationHolder.config.support.reminder.web.person.max
        else
            Person.count() < ConfigurationHolder.config.support.reminder.web.person.max
    }
    }

    String toString() {
        "[$firstName $lastName, $email, $lastDutyDate]"
    }
}
Run Code Online (Sandbox Code Playgroud)

grails grails-validation grails-domain-class

3
推荐指数
1
解决办法
7182
查看次数

验证Grails中的IP地址

我正在寻找一种通过约束验证Grails中的IP地址的方法.

这样的事情可能吗?

package example

class Ip {

    String ip

    static constraints = {
        ip(unique: true, inetAddress: true)
    }
}
Run Code Online (Sandbox Code Playgroud)

我找到了这个链接:http://grails.org/doc/2.2.x/api/org/codehaus/groovy/grails/validation/routines/InetAddressValidator.html,但我不知道如何实现这个.

validation grails-validation grails-domain-class grails-2.0

3
推荐指数
1
解决办法
1116
查看次数

Grails - 在域类问题上测试自定义验证器

我正在学习Grails的Grails - 由Jason Rudolph的书开始.我的域类看起来像这样:

class Race {

  String name;
  Date startDateTime
  String city
  String state
  Float distance
  Float cost
  Integer maxRunners = 10000

  static hasMany = [registrations: Registration]

  static constraints = {
    name(maxSize: 50, blank: false)
    startDateTime(validator: {
      return it > new Date()
    })
    city(maxSize: 30, blank: false)
    state(inList: ['GA', 'NC', 'SC', 'VA'], blank: false)
    distance(min: 3.1f, max: 100f)
    cost(min: 0f, max: 999.99f)
  }

  String toString() { "${this.name} : ${this.city}, ${this.state}" }
}
Run Code Online (Sandbox Code Playgroud)

我想测试startDateTime字段的自定义验证.测试看起来像这样:

class RaceTests extends GrailsUnitTestCase {
  protected …
Run Code Online (Sandbox Code Playgroud)

grails grails-validation

1
推荐指数
1
解决办法
1665
查看次数

服务方法中的Grails验证错误

我在服务类中有一个创建对象的方法:

def createContent (fileName, description) {

    def content = new Content(
        fileName:fileName,
        description:description,
    ).save()
}
Run Code Online (Sandbox Code Playgroud)

这些属性都不可为空.如何将验证错误传回显示?我尝试过flash.message和render,两者都不能在服务类中使用.我也尝试过.save(failOnError:true),它显示了很长的错误列表.

service grails-validation

1
推荐指数
1
解决办法
1891
查看次数