Groovy 2.4.4 объекты команды - повторное использование закрытия валидатора
Допустим, у меня есть следующая команда:
@Validateable
class MyCommand {
String cancel_url
String redirect_url
String success_url
static constraints = {
cancel_url nullable: false, validator: { url, obj ->
//some specific validation
//some common url validation
}
redirect_url nullable: false, validator: { url, obj ->
//some specific validation
//some common url validation
}
success_url nullable: false, validator: { url, obj ->
//some specific validation
//some common url validation
}
}
}
Допустим, у меня есть общая проверка, которую я хочу выполнить для любого поля URL (например, проверка того, что домен разрешен). Каков синтаксис, чтобы разбить этот общий код проверки на отдельную функцию вместо того, чтобы помещать один и тот же блок в каждое закрытие проверки?
1 ответ
Решение
Вы пытались унаследовать (или, скажем, реализовать) вашу команду от нескольких признаков?
Trait CancelComponentCommand {
String cancelUrl
static constraints = {
cancelUrl validator: { url, obj ->
//some specific validation
//some common url validation
}
}
}
Trait RedirectComponenCommand {
String redirectUrl
static constraints = {
redirectUrl validator: { url, obj ->
//some specific validation
//some common url validation
}
}
}
@Validateable
class MyCommand implements CancelComponentCommand, RedirectComponenCommand {
}
PS Нет необходимости устанавливать nullable: false
по умолчанию это ложь. Кроме того, код гораздо более читабелен, если поля написаны с использованием camelCase.