Сделать унаследованные ограничения более строгими

#grails #grails-constraints

#grails #grails-ограничения

Вопрос:

В Grails при использовании CommandObjects или DomainClass как я могу ограничить ограничение унаследованного свойства?

Допустим, у меня есть родительский класс с ненулевым свойством payload :

 abstract class TextContentCommand extends ContentCommand {

    String payload

    static constraints = {            
        payload nullable: false
    }
  

В подклассе я хотел бы сделать свойство более строгим и установить максимальную длину:

 class FacebookTextContentCommand extends TextContentCommand {

    public static final int LENGTH_MAX = 4

    static constraints = {
        importFrom TextContentCommand
        payload maxSize: LENGTH_MAX
    }
}
  

Этот способ не работает, и когда предоставляется более длинная строка, проверка проходит. Мои знания о Grails очень поверхностны. Как я могу ограничить унаследованные свойства?

Ответ №1:

Проблема LENGTH_MAX заключалась в константе. Предоставление значения напрямую заставляет проверку снова работать.

 class FacebookTextContentCommand extends TextContentCommand {

    static constraints = {
        importFrom TextContentCommand
        payload maxSize: 4
    }
}