; . . , , (. docs). , , , :
class Sample {
String information
String legacyLookup
String serialNumber
static constraints = {
information(nullable: true)
legacyLookup(validator: {val, obj->
if( (!val && !obj.serialNumber) || (val && obj.serialNumber) ) {
return 'must.be.one'
}
})
}
}
messages.properties :
must.be.one=Please enter either a serial number or a legacy id - not both
- :
legacyLookup(validator: {val, obj->
if(!val && !obj.serialNumber) {
return 'must.be.one'
}
if(val && obj.serialNumber) {
return 'only.one'
}
})
message.properties:
only.one=Don't fill out both
must.be.one=Fill out at least one...
, ...