Добавьте ограничения на свойства класса Groovy (не класса домена Grails!) - PullRequest
0 голосов
/ 05 мая 2011


Как мы можем добавить некоторые общие ограничения (например, maxLength, nullable) к свойству класса Groovy? Я знаю, что мы можем сделать это в классе домена Grails, но возможно ли это, если это класс Groovy (я использую его как класс DTO для моего проекта Grails)?
Большое вам спасибо!

Ответы [ 3 ]

6 голосов
/ 05 мая 2011

Вы можете добавить ограничения к классам команд.Если командный класс находится в том же файле .groovy, что и контроллер (в Groovy в каждом файле .groovy может быть более одного открытого класса), вам не нужно делать ничего особенного, чтобы Grails признал его командным классом..

Однако, если ваш командный класс находится где-то еще (например, в src / groovy), вам нужно аннотировать его с помощью @Validateable и добавить имя пакета к параметру grails.validateable.packages в Config.groovy.Вот пример команды, которая не находится в том же файле, что и контроллер

pacakge com.example.command

@Validateable
class Person {
  Integer age
  String name

  static constraints = {
    name(blank: false)
    age(size 0..100)
  }
}

Добавьте следующее к Config.groovy

grails.validateable.packages = ['com.example.command']

Классы команд имеют метод validate(), добавленныйGrails.После вызова этого метода все ошибки будут доступны в свойстве errors (в соответствии с классами домена).

1 голос
/ 05 мая 2011

Использование грааля Командный объект , вероятно, ваш лучший выбор.У него есть ограничения и проверка, но нет поддержки базы данных.Обычно это объект значения, который используют контроллеры, но вы можете создать экземпляр вне контроллера без проблем.

0 голосов
/ 17 мая 2014

Не уверен, относится ли это к вашему использованию (я не знаком с DTO), но в текущей версии (2.3.8) вы также можете добавить ограничения Grails в абстрактный класс, и они будут унаследованыдомены, которые его расширяют.Ваша IDE может не понравиться, хотя;)

...