Как я могу получить доступ к предварительно созданным проверкам ограничений в Grails?
Допустим, например, я хочу использовать валидатор range на объекте Map.
Map<String, Double> myData
static constraints = {
myData validator: { val, obj, errors ->
//Iterate through all Double values and validate using `range` constraint
}
}
Кажется, не имеет смысла писать мой собственный метод проверки range, поскольку в Grails уже есть один встроенный где-то. Как я могу получить к нему доступ?
Чтобы уточнить, ограничение range - это всего лишь пример. Просто ищу, как вообще получить доступ к любой из этих предварительных сборок.
Обновлять:
Чтобы прояснить ситуацию на более простом примере. Я знаю, как использовать ограничения стандартным способом. Я пытаюсь программно использовать проверки ограничений, для которых не могу найти документацию.
def myMethod() {
int myInt = 5;
//HOW DO I CALL RANGE (OR ANY) OF THE PRE-BUILT VALIDATION METHODS
if (RANGE(myInt, 0..5)) {
//DO SOMETHING
}
}
Как я уже сказал, я не хочу изобретать велосипед, если он уже существует. API, который используют ограничения проверки, должен быть где-то, как я могу вручную вызвать эти API?
не работает domainInstance.validate ()?
@Vahid Извините за непонятность. Я знаю, как использовать ограничения согласно документации. Я хочу использовать методы проверки вне ограничений. См. Обновленный вопрос.
Я не думаю, что вы можете делать то, что пытаетесь сделать. Проверка Grails просто расширяет проверку java, и короче говоря, если вы можете сделать это на Java, то это будет возможно в Groovy. stackoverflow.com/questions/28702809/…. По сути, лучший вариант, который я думаю для вашего сценария, - это создать bean-компонент Validation, например github.com/vahidhedayati/grails-queuemail-plugin/blob/master /…. Затем позвольте bean-компоненту вызывать методы проверки, такие как bean.validate () в вашем методе
Извините, я надеюсь, что это вас еще больше не смущает, поэтому обычно вы связываете bean-компонент с данными перед передачей в службу github.com/vahidhedayati/grails-queuemail-plugin/blob/master /… - вы можете выполнять всю его проверку в контроллере - контроллер автоматически волшебным образом связывает полученные параметры с bean-компонентом - вам нужно будет следить за некоторыми из моих контроллеров в самых последних плагинах, чтобы увидеть, как это работает - или в сервисе MyBean bean = new MyBean(); bean.myInt=5; if (bean.validate()) { //do something}



myDate range: 18..65 //could be age of a person for example
Взято из: http://docs.grails.org/3.2.7/ref/Constraints/range.html
Извините, я спрашиваю не об этом. Я знаю, как использовать ограничения согласно документации. См. Обновленный вопрос.
Это Spring под капотом, так что среда валидации должна предоставить вам эту функциональность. Что касается grails, я не знаю, как использовать его так, как вам нужно.