Grails中的电子邮件验证
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grails中的电子邮件验证相关的知识,希望对你有一定的参考价值。
grails中是否有一种方法可以定义可以为空的电子邮件字段,但如果该值存在,那么它必须是电子邮件类型?
我试过了
String name
String email
static constraints = {
email nullable: true, blank: false, email: true
}
但如果我没有为电子邮件提供任何值,只提供name的值,则不保存实例。
答案
检查电子邮件参数也许它不是null而是空字符串。在这种情况下,由于“blank:false”约束,它将失败。
另一答案
在阅读了您的问题后,我了解到您需要提供姓名和电子邮件,假设您的域类具有名称Profile,您可以尝试这样做:
class Profile {
String name
String email
static constraints = {
name blank: false
email nullable: false, blank: false, email: true
}
}
然后,您可以检查save方法是否返回null,表明存在验证错误,因此实例不会保留。你可以在这里阅读http://docs.grails.org/snapshot/ref/Domain%20Classes/save.html
我在app开始时尝试这个,在这里你可以看到profile1和profile2中的email属性不是有效值,所以不会持久化,验证电子邮件值是否是原因,如果是,则写入一条消息
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>
另一答案
只需删除blank: false
这会在nullable
和blank
属性之间产生冲突。然后,如果为空,您可以保存数据而不使用电子邮件,否则将验证电子邮件类
以上是关于Grails中的电子邮件验证的主要内容,如果未能解决你的问题,请参考以下文章