我有一个“Thing”域类,其中每个Thing都有一个记录号(不是自动生成的ID),用户将使用该记录号来访问Thing:
class Thing {
...
String recordNumber
...
}
有一种查找事物的形式,知道它的recordNumber:
<g:form action="search">
<input name="recordNumber">
<g:submitButton name="btn" value="go to this Thing"/>
</g:form>
我想以这种形式使用验证过程:如果未找到recordNumber(
Thing.findByRecordNumber(recordNumber) == null
),则输入字段必须变为红色,并且工具提示必须显示错误消息“找不到记录号”。据我了解/阅读(我是grails新秀),这必须作为Thing类中的约束来编写:
static constraints = {
recordNumber validator: { n -> Thing.findByRecordNumber(recordNumber) }
}
问题是:我没有这种形式要填充的所有“Thing”属性,只有recordNumber一个,所以我无法调用
new Thing(params).validate()
如何仅在一个字段而不是整个对象上调用验证?
最佳答案
如果这是您的主要问题,尽管我在那里看到其他人:
“如何仅在一个字段而不是整个对象上调用验证?”
您可以传递值列表进行验证,它将仅验证那些属性
new Thing(params).validate(["recordNumber"])
http://grails.org/doc/latest/ref/Domain%20Classes/validate.html
关于forms - grails:仅对一个字段/属性进行自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688499/