Какая разница между пробелом и значением NULL в ограничениях класса домена grails? - PullRequest
0 голосов
/ 16 октября 2019

Только что видел этот пример для ограничения Grails, но почему бы просто не оставить пустым ограничение, я думаю, что и nullable, и blank будут иметь одинаковую функцию.


class User {
    String firstName
    String lastName
    String passwordHash

    static constraints = {
        firstName blank: false, nullable: false
        lastName blank: false, nullable: false
        passwordHash blank: false, nullable: false
    }
}

1 Ответ

0 голосов
/ 16 октября 2019

По умолчанию все свойства класса домена не обнуляются (то есть имеют неявное ограничение nullable: false).

Ограничения:

  • blank - Проверяет, что значение String не является пустым. Установите false, если строковое значение не может быть пустым.

Если строка null, она не будет подтверждена с blank: true. В этом случае установите для ограничения nullable значение true.

  • nullable - позволяет задать для свойства значение null. По умолчанию Grails не допускает значения null для свойств. - по умолчанию до false. Установите в значение true, если свойство допускает нулевые значения.

Но почему бы просто не оставить пустым в качестве ограничения, я думаю, что и обнуляемый, и пустой будут иметь одинаковую функцию

Веб-запросы, полученные в результате отправки формы, будут содержать пустых строк, а не ноль , для полей ввода, которые не имеют значения. Помните об этом, когда делаете массовое связывание свойств со свойствами, которые не обнуляются. Поведение по умолчанию таково, что пустая строка не будет проверяться для nullable: false, поскольку средство связывания данных преобразует blank строки в null. Это включает в себя пустые строки и пустые строки.

Пустая строка - это любая строка, такая, что метод trim() возвращает пустую строку. Чтобы отключить преобразование пустых строк в null, установите для свойства grails.databinding.convertEmptyStringsToNull значение false в application.groovy.

Пожалуйста, обратитесь к документации для получения более подробной информации.

Надеюсь, это поможет вам.

...