grails中的自定义验证不起作用

grails中的自定义验证不起作用,grails,groovy,Grails,Groovy,我在grails中有一个用于自定义验证的简单代码,但不知道为什么它不起作用 我有一个域类Person,有两个字段,分别是National和other。条件是,如果用户选择National as others,这是列表中的,则另一个字段为必填字段,如果用户跳过此字段,则应发出grails错误消息 nationality(blank:false,nullable:false,inList:["Indian", "Other"]) other(blank:true,nullable:true,vali

我在grails中有一个用于自定义验证的简单代码,但不知道为什么它不起作用

我有一个域类Person,有两个字段,分别是National和other。条件是,如果用户选择National as others,这是列表中的
,则另一个字段为必填字段,如果用户跳过此字段,则应发出grails错误消息

nationality(blank:false,nullable:false,inList:["Indian", "Other"])
other(blank:true,nullable:true,validator:{val,obj ->
    if(obj.nationality!="Indian" && !val){println "values"+val+"nationality"+obj.nationality
    return ['requiredfield'] 
    } 
我还映射了
message.properties
文件中的错误名称,如下所述

person.nationality.requiredfield=Please mention your nationality.

控制台上的输出为空值

您将错误消息放置在错误的位置:

这样做:

person.other.requiredfield = Please mention your nationality.

请注意错误代码的差异,即将“国籍”替换为“其他”。

您是否尝试在
消息中提供完全限定的名称。属性

比如:

com.domain.Person.other.requiredfield = Please mention you nationality

您所面临的问题,正如我所看到的,代码运行良好。“console上的输出值为null”值在设置后不会为null。代码运行良好,但不会打印执行验证的message.property文件中定义的错误消息,请尝试println obj.errors查看错误代码的组合。在使用obj.errors时,它会打印grails.validation.ValidationErrors:0 errorsNational是一个内联列表,它有一个选定的值其他,如果用户没有填写其他字段,我需要一条错误消息您应该看一看在我的情况下没有任何效果我尝试了所有这两种方法,但都无法打印错误消息是的,我尝试了返回“com.in.service.Person.other.error”,并在消息文件中更新为com.in.service.Person.other.error=SomemessageNo,您应该在messages.properties中使用全名,并在return语句中保留requiredfield。您尝试过吗?是的,我尝试过使用return['requiredfield'],并在messages.properties文件中更新为com.in.service.Person.other.error=Somemessage,还尝试了error.com.in.service.Person.other=Somemessage。但它们都不起作用:-(为什么在结尾使用error?语法是
full.package.name.ClassName.fieldName.returnedValue
。因此,在您的例子中,它应该是
com.in.service.Person.other.requiredfield
。仍然不起作用?我在一些链接中看到了它,无论如何,我一直以传统的方式使用它,只在结尾使用requiredfield,但只是che。)从另一个角度来看,它们都不管用。