Grails 2.2.3
我的自定义验证器
bankCode( nullable: false, blank: false, minSize: 8, maxSize: 8, validator: {pValue, pDomain ->
List<CashAccountMapping> lCashAccountMappingList =
CashAccountMapping.findAllByBankCodeAndSchoolYear(pValue, pDomain.schoolYear )
lCashAccountMappingList = lCashAccountMappingList - pDomain
if (lCashAccountMappingList) {
return 'cashAccountMapping.invalid.validator.message'
}
})
我的自定义错误消息没有按照我的想法返回。它在下面我怎么出去? 我想把它变成一串显示给用户的所有错误
if ( newCashAccountMapping.validate() ) {
newCashAccountMapping.save(flush:true)
}
else {
newCashAccountMapping.errors.each { it
println it //Add to a string of errors
}
}
在我的messages.properties
中cashAccountMapping.invalid.validator.message={0} XYZ
运行代码时我得到以下信息:
[字段'bankCode'中对象'com.srm.ledger.CashAccountMapping'中的字段错误:被拒绝的值[CK01 036];代码[com.srm.ledger.CashAccountMapping.bankCode.validator.error.com.srm.ledger.CashAccountMapping.bankCode,com.srm.ledger.CashAccountMapping.bankCode.validator.error.bankCode,com.srm.ledger.CashAccountMapping。 bankCode.validator.error.java.lang.String,com.srm.ledger.CashAccountMapping.bankCode.validator.error,cashAccountMapping.bankCode.validator.error.com.srm.ledger.CashAccountMapping.bankCode,cashAccountMapping.bankCode.validator。 error.bankCode,cashAccountMapping.bankCode.validator.error.java.lang.String,cashAccountMapping.bankCode.validator.error,com.srm.ledger.CashAccountMapping.bankCode.cashAccountMapping.invalid.validator.message.com.srm.ledger。 CashAccountMapping.bankCode,com.srm.ledger.CashAccountMapping.bankCode.cashAccountMapping.invalid.validator.message.bankCode,com.srm.ledger.CashAccountMapping.bankCode.cashAccountMapping.invalid.validator.message.java.lang.String,融为一体。 srm.ledger.CashAccountMapping.bankCode.cashAccountMapping.invalid.validator.message,cashAccountMapping.ban kCode.cashAccountMapping.invalid.validator.message.com.srm.ledger.CashAccountMapping.bankCode,cashAccountMapping.bankCode.cashAccountMapping.invalid.validator.message.bankCode,cashAccountMapping.bankCode.cashAccountMapping.invalid.validator.message.java.lang。串,cashAccountMapping.bankCode.cashAccountMapping.invalid.validator.message,cashAccountMapping.invalid.validator.message.com.srm.ledger.CashAccountMapping.bankCode,cashAccountMapping.invalid.validator.message.bankCode,cashAccountMapping.invalid.validator.message。 java.lang.String中,cashAccountMapping.invalid.validator.message];参数[bankCode,Cash Account Mapping,CK01 036];类[{2}]的类[{1}]的默认消息[属性[{0}]未通过自定义验证]]
答案 0 :(得分:1)
尝试:
if (lCashAccountMappingList) {
return ['cashAccountMapping.invalid.validator.message']
}
然后grails会寻找这个属性:
yourClassName.bankCode.cashAccountMapping.invalid.validator.message=Invalid {0} value
有关更多示例,请参阅validator documentation。