Проверка электронной почты в Grails - PullRequest
0 голосов
/ 06 сентября 2018

В граалях есть способ определить поле электронной почты, которое можно обнулять, но если значение присутствует, то оно должно быть типа email?

Я пытался

String name
String email

static constraints = {
    email nullable: true, blank: false, email: true
}

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

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

После прочтения вашего вопроса я понимаю, что вы требуете, чтобы имя и адрес электронной почты были предоставлены, при условии, что у вашего домена есть имя профиля, вы можете попробовать это:

class Profile {
    String name
    String email

    static constraints = {
        name blank: false
        email nullable: false, blank: false, email: true
    }
}

Затем можно проверить, возвращает ли метод сохранения значение NULL, указывая на наличие ошибки проверки и в результате экземпляр не сохраняется. Вы можете прочитать об этом здесь http://docs.grails.org/snapshot/ref/Domain%20Classes/save.html

Я пытаюсь это сделать, когда приложение запускается, здесь вы можете видеть, что свойства электронной почты в profile1 и profile2 не являются допустимыми значениями, поэтому не сохраняются, проверяется, является ли значение электронной почты причиной, и если да, пишется сообщение

package demo

class BootStrap {

    def init = { servletContext ->
        Profile profile1 = new Profile(name: 'john', email: '')
        Profile profile2 = new Profile(name: 'peter', email: 'asdasd')
        Profile profile3 = new Profile(name: 'ana', email: 'ana@example.com')

        List<Profile> profiles = [profile1, profile2, profile3]

        profiles.each { Profile profile ->
            if (!profile.save()) {
                if (profile.errors.hasFieldErrors('email')) {
                    println profile.errors.getFieldError('email').rejectedValue + ' is an invalid values'
                }
            }
        }
    }

    def destroy = {
    }
}

Здесь вывод

grails> rA
| Running application...
null is an invalid values
asdasd is an invalid values
Grails application running at http://localhost:8080 in environment: development
grails> 
0 голосов
/ 08 сентября 2018

Just Remove blank: false Это создает конфликт между nullable & blank свойством. Затем вы можете сохранить данные без электронной почты, если ноль, в противном случае тип электронной почты будет проверен.

0 голосов
/ 06 сентября 2018

Проверьте параметры электронной почты. Может быть, это не ноль, а пустая строка. В этом случае произойдет сбой из-за ограничения «blank: false».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...