Вы можете добавить пользовательский валидатор в поле applicationImage, чтобы проверять только нулевое значение, если поле customErrorMessage не равно нулю.Таким образом, вы получите ошибку applicationImage только в исключительной ситуации валидации, если customErrorMessage не равен нулю.
При закрытии валидатора у вас есть доступ к значению проверяемого поля, а также ко всему объекту:
myField(validator: { val, obj -> return propertyName == "myField" })
Таким образом, вы можете сделать что-то вроде этого:
static constraints = {
applicationName(blank: false, size: 1..25)
applicationShortName(blank: false, size: 1..10)
applicationImage(validator: {val, obj ->
if (obj.customErrorMessage != null) {
if (val == null) return ['imageNull']
if (val.size() > MAX_SIZE) return ['tooLarge']
}
})
contentProviderId (
validator: {
if (it == 0) {
return ['notSelected']
}
}
)
customErrorMessage (
validator: {
if ("fileToBig".equals(it)) {
return ['fileToBig']
}
}
)
}
Может потребоваться настройка сообщений об ошибках, но я надеюсь, что вы поняли мою точку зрения;)