grails - 我们可以在Grails服务中进行验证吗

标签 grails groovy

static constraints = {}

他们在文档中说它可以在Domains中工作。如果我们在服务中创建变量,是否可以在服务中应用约束?

最佳答案

Can we apply constraints in services if we create variables in it ?



是。很久以前,我们引入了@Validateable批注,它使您几乎可以使用Groovy编写的任何类(包括Service类)都可验证。请参阅https://github.com/jeffbrown/validateableservice上的项目,其中包括以下内容:

grails-app / services / demo / PeculiarService.groovy
package demo

@grails.validation.Validateable
class PeculiarService {

    String someString

    static constraints = {
        someString matches: /[A-Z].*/
    }
}

测试/单位/演示/特殊服务规格.groovy
package demo

import grails.test.mixin.TestFor
import spock.lang.Specification

@TestFor(PeculiarService)
class PeculiarServiceSpec extends Specification {

    void "test validation"() {
        when: 'someString begins with a lower case letter'
        service.someString = 'invalid'

        then: 'validation fails'
        !service.validate()

        when: 'someString begins with an upper case letter'
        service.someString = 'Valid'

        then: 'validation passes'
        service.validate()
    }
}

请注意,如果您的服务具有这样的状态,则几乎可以肯定不希望该服务为单例,这是默认范围。另外,几乎没有理由使服务可验证,但是没有问题的答案是"is"。

关于grails - 我们可以在Grails服务中进行验证吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26675068/

相关文章:

grails - 如果使用Spring Security插件从Grails应用程序注销,则获得HTTP状态405

java - 如何将 groovy 属性复制到 java bean 属性

grails - Grails Spring Security- session 超时时自动重定向

grails - 使用Spring Security验证用户凭证

java - 如何使用grails中的脚本覆盖所有打印方法的功能

java - Ajax 调用后, session 属性未在 .gsp 页面中更新

java - 我应该在 grails 2.0 中使用哪个 paypal/payment 插件?

grails - 无法在Grails中发动 war

java - 使用spring在groovy脚本中配置java类的属性

Hibernate 条件 - 获取单个对象