Grails 全局约束

2024-03-26

在 1.2 版本中,Grails 引入了全局约束。我尝试将以下内容添加到 Config.groovy

grails.gorm.default = {

    constraints {
        notBlank(nullable:false, blank:false)
    }
}

然后在我的一个域类中使用它

static constraints = {
    email(email: true, unique: true, shared: 'notBlank')
}

但是,当我保存电子邮件地址为空的用户时,没有报告任何错误,为什么?

谢谢, 大学教师


我从未尝试过创建全局约束,但我可以告诉您,如果您想将字段标记为非空白且不可为空,则根本不需要创建新约束,只需将其添加到您的域类中即可:

static constraints = {
    email(blank:false)
}

当然,如果您期望保存时出现异常,则不会出现异常 - 您需要在调用 save() 或 validate() 后测试对象,如该域类中所示:

class Contact {
    static constraints = {
        name(blank:false)
    }
    String name
}

及其测试用例:

import grails.test.*

class ContactTests extends GrailsUnitTestCase {
    protected void setUp() {
        super.setUp()
    }

    protected void tearDown() {
        super.tearDown()
    }

    void testNameConstraintNotNullable() {
        mockDomain Contact
        def contact = new Contact()
        contact.save()
        assertTrue contact.hasErrors()
        assertEquals "nullable", contact.errors["name"]
    }
}

如果您确实希望保存时出现异常,您可以在 Config.groovy 中添加此设置:

grails.gorm.save.failOnError = true

我发现它在开发中非常有用。

HTH

PS

要使用您定义的约束,您需要将其添加到您的域类中:

static constraints = {
    email(shared:"myConstraintName")
}

但请注意,您无法像在内置测试中那样在单元测试中测试约束,因为配置不会被读取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grails 全局约束 的相关文章

随机推荐

  • 长 vs {0L}[0]

    在我们的一项旧服务中 我发现了这样一段代码 评论为原创 long tasksCounter 0 boxing for long counters long errorsCounter 0 boxing for long counters 此
  • R:传递函数参数以覆盖内部函数的默认值

    在 R 中 我想做这样的事情 我有一个函数 f1 它有一个带有默认值的参数 k 3 f1 function x k 3 u x 2 k u 然后我定义了第二个函数 f2 来调用 f1 f2 function z s s f1 z 允许 f2
  • jQuery ajax() 预加载多个内容

    我使用以下代码来预加载 mp3 ajax url boom mp3 success function done 我是否可以预加载多个元素 例如图像和 mp3 e g ajax url boom mp3 moo jpg success fun
  • 获取对象中调用者类的名称的最佳方法是什么?

    我可以使用这个来完成这个工作 scala gt object LOGGER def warning msg String implicit className String className defined object LOGGER s
  • 如何使用 ColdFusion 防止 SQL 注入

    ColdFusion 中如何防止 SQL 注入 我对这种语言 框架很陌生 这是我的示例查询
  • addCleanup与tearDown

    最近 内德 巴切尔德 Ned Batchelder 他在 PyCon 2016 上的演讲 http nedbatchelder com text machete html noted 如果您正在使用unittest编写你的测试 一定要使用a
  • Docker 镜像存储在主机的哪里?

    我设法在目录下找到容器 var lib docker containers 但我找不到图像 下有哪些目录和文件 var lib docker 的内容 var lib docker目录因情况而异Docker 用于存储的驱动程序 https g
  • 104、“连接由对等方重置”套接字错误,或关闭套接字何时会导致 RST 而不是 FIN?

    我们正在并行开发 Python Web 服务和客户端网站 当我们从客户端向服务发出 HTTP 请求时 一次调用会在 socket py 的 read 中持续引发一个 socket error 104 Connection reset by
  • 地图样式更改时 Google 地图会更改图标标记

    我正在做一个网络动态项目 在我的 html jsp 页面主体中使用 Google 地图 我创建了一个函数 通过 lat lng map 创建一个标记 并在标记的参数中使用特殊的 image png 作为图标 在我的地图中 我制作了两种不同的
  • Jquery Flot“plothover”事件不起作用

    我有一个似乎无法追踪的问题 我正在使用 Flot 绘制一些数据图表 超级简单 我想添加您在这里看到的悬停效果 浮点数示例 http people iola dk olau flot examples interacting html 不幸的
  • 如何合并 Google 字体导入

    我正在使用带有 Divi 主题的 WordPress 有这样的代码 function et divi fonts url fonts url Translators If there are characters in your langu
  • 为什么调用 setenv("OS_ACTIVITY_DT_MODE", "disable", 1) 不会影响日志记录?

    可以通过设置在 Swift 中隐藏由第 3 方库生成的过于详细的日志OS ACTIVITY MODE环境变量为disable在您的跑步计划中 如下图所示 这让所有人都沉默NSLog您的应用程序的输出 我只想对某些呼叫禁用它 我尝试像这样设置
  • 确定响应者链是否将处理操作

    响应者链很酷 http www cocoanetics com 2012 09 the amazing responder chain 特别是 能够将自定义操作发送给第一响应者 这些操作将冒泡给其他可能感兴趣的人 UIApplication
  • 如何在向上/向下滚动时隐藏/显示视图?

    如何在向上 向下滚动 android 时隐藏 显示视图Foodpanda app 我想隐藏 显示视图 线性或相对布局 ScrollView就像上面的 gif 一样向上 向下 但我的应用程序我不使用 Recyclerview 或列表视图 只是
  • graphviz dot:如何将箭头从节点插入到箭头中心

    我尝试使用 graphviz 包中的 dot 创建用于 MPLUS 分析的图表 有人有使用点可视化结构方程模型 潜在类混合模型的经验吗 特别是有一个功能我不知道如何做得漂亮 我需要从节点到另一个箭头中心的箭头 例如 C V A gt B 我
  • 尝试在 Preg_Match 中查找正斜杠

    我已经搜索了几个小时试图找到解决方案 我正在尝试确定 REQUEST URI 是否合法 并从那里对其进行分解 samplerequesturi variable 12345678910 要确定它是否合法 第一部分variable仅是字母并且
  • 使用单个字符或仅一个字符串进行 boost split

    我希望将字符串拆分为单个字符或字符串 我想用boost split因为 boost string 是我们基本字符串处理的标准 我不想混合几种技术 在单个字符的情况下我可以做split vec str is any of 但我想知道是否有办法
  • boost 的另一个“ld:未找到架构 x86_64 的符号”问题,这次是 mgiza

    我很抱歉问了这样一个常见的问题 我找不到任何可行的或足够清晰的解决方案供我实施 我只是想安装mgiza https github com moses smt mgiza 这是安装文件 cmake make make install If y
  • 监听队列(事件驱动,无轮询)服务总线/存储队列

    我试图弄清楚如何侦听队列上的事件 尤其是入队事件 假设我有一个控制台应用程序和一个服务总线队列 主题 如何连接到队列并等待新消息 我试图在没有While true 和不断的轮询 我试图以一种相当监听的方式来做更多的事情 比如保持连接到队列的
  • Grails 全局约束

    在 1 2 版本中 Grails 引入了全局约束 我尝试将以下内容添加到 Config groovy grails gorm default constraints notBlank nullable false blank false 然