文档章节

Groovy&Grails-代码剪辑-复用约束

寡鸡蛋
 寡鸡蛋
发布于 2013/11/01 14:28
字数 324
阅读 84
收藏 0

假如我们在程序中使用了一个command对象,在Grails2.0之后的版本中引入了新的机制,可以复用constraints块的代码,重用约束,如下面的例子:

<!-- lang: groovy -->
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 
    } 
}

上面的代码时一个标准的domain对象,假如我们要在页面中增加一个密码验证,常用的办法是增加一个类似的command对象,代码如下:

<!-- lang: groovy -->
class UserCommand {
    String firstName
    String lastName
    String password
    String confirmPassword

    static constraints = { 
        importFrom User
        password blank: false, nullable: false 
        confirmPassword blank: false, nullable: false 
    } 
}

上面的代码修改了password为没加密的密码,新增加了一个confirmPassword属性,其他的和domain对象一样,包括约束也应该一样,所以这里可以使用importFrom User重用User的约束

如果不需要完全使用User的约束,可以使用include和exclude参数,include代码指定引入,exclude代表排除,如下:

<!-- lang: groovy -->
…
static constraints = {
    importFrom User, include: ["lastName"]
    …
}

上面的代码表示只引入lastName的约束信息

<!-- lang: groovy -->
…
static constraints = {
    importFrom User, include: [/.*Name/]
    …
}

上面的代码表示只引入后缀为Name的属性的约束信息,这里还使用了正则表达式。如果使用exclude则反之

© 著作权归作者所有

共有 人打赏支持
寡鸡蛋
粉丝 12
博文 51
码字总数 19107
作品 0
中山
售前工程师
私信 提问
Groovy&Grails-代码剪辑-初始化

开发时需要初始化一些特定的代码,测试时需要初始化一些测试代码,在生产环境时需要初始化一些运行时环境代码,在Grails的bootstrap中可以根据不同的环境进行特定的植入,代码如下:...

寡鸡蛋
2013/10/03
0
0
Groovy&Grails-代码剪辑-domain对象保存

默认domain对象中,没有在constraints中声明的属性都是必填项。 如User对象 测试代码 会出现用例测试错误,将所有字段都填值后,测试代码运行正常 在constraints中声明lastname允许为空 再测...

寡鸡蛋
2013/10/08
0
0
Groovy&Grails-代码剪辑-domain对象继承

默认的对象继承在数据库中的表现也是将表用外键进行关联管理,当然可以修改默认的配置,而且为了保持对象和数据表的一致性,这里建议修改成一张表来表示继承对象 对象继承 数据表外键关联 用...

寡鸡蛋
2013/10/03
0
0
Groovy&Grails-代码剪辑-日志跟踪

任何开发都需要跟踪一些调试信息,避免频繁的使用Debug模式,我们会在方法中放入一些info,执行过程中打印到后台,Grails使用的是log4j作为日志框架,所以和在Java开发中的使用方法是一样的,...

寡鸡蛋
2013/10/05
0
0
Groovy&Grails-代码剪辑-直接使用数据表

其实现在开发过程中,大部分人对面向对象的概念一点都不感冒.虽然这玩意发展了这么久,在国内的软件公司确不为所动.估计是工期赶的紧,所以大部分功能就一条SQL搞定比较干脆.在Grails中其实不提...

寡鸡蛋
2013/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TiQuery:All Diagnosis in SQL | TiDB Hackathon 优秀项目分享

本文作者是来自 TiNiuB 队的黄梦龙同学,他们的项目 TiQuery 在本届 TiDB Hackathon 2018 中获得了三等奖。 TiQuery 可以搜集诊断集群问题所需要的信息,包括集群拓扑,Region 分布,配置,各...

TiDB
19分钟前
2
0
git 分支创建合并流程图

gentlelions
27分钟前
3
0
Kali Linux常用服务配置教程DHCP服务原理

Kali Linux常用服务配置教程DHCP服务原理 动态主机配置协议(Dynamic Host Configuration Protocol,简称DHCP)是一个局域网的网络协议,基于UDP协议工作。它主要有两个用途:第一,给内部网...

大学霸
28分钟前
2
0
控制台打印图片

function dev(){ if (window.console){ console.log("%c\n ", "font-size:100px;background:url('http://gmcyzs.com/resources/images/logo.png') no-repeat"); console.log('%c 深务平台,\......

羊皮卷
35分钟前
0
0
MyBaties的二级缓存

二级缓存介绍 在上文中提到的一级缓存中,其最大的共享范围就是一个SqlSession内部,那么如何让多个SqlSession之间也可以共享缓存呢,答案是二级缓存。 当开启二级缓存后,会使用CachingExec...

嘴角轻扬30
36分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部