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/