文档章节

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

寡鸡蛋
 寡鸡蛋
发布于 2013/11/01 14:28
字数 324
阅读 70
收藏 0
点赞 0
评论 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
博文 50
码字总数 19107
作品 0
中山
售前工程师
Groovy&Grails-代码剪辑-初始化

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

寡鸡蛋 ⋅ 2013/10/03 ⋅ 0

iOS 视频播放器-模块化您的控制层, 基于SJVideoPlayer的控制层切换器

播放器的控制层有很多种, 例如在Cell上播放, 与在单一的视图上, 控制层显示的可能不一样. 有的小伙伴可能会在一个控制层中加上判断去显示不同的UI. 我在这里提供另外一种方法, 就是控制层切换...

changsanjiang ⋅ 06/04 ⋅ 0

Groovy&Grails-代码剪辑-domain对象保存

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

寡鸡蛋 ⋅ 2013/10/08 ⋅ 0

Nebula3中的骨骼动画: Animation子系统

就像CoreAnimation 中提到的, Nebula2动作系统急需一个全新的设计和编码. 在《龙歌》的开发和另一个针对表情动画的研究中, 我们不得不为这个天生不足的系统加入新的特性. 最后系统勉强可以正...

长平狐 ⋅ 2012/11/12 ⋅ 0

Groovy&Grails-代码剪辑-日期时间格式化

使用grails标签获取到日期时间后是格林威治时间样式:2013-09-27 13:57:37 CST ,所以显示的时候需要格式化一下,格式化代码如下: 但是使用JSON获取到数据后,不是用标签获取到的,所以需要在生成...

寡鸡蛋 ⋅ 2013/09/27 ⋅ 0

Groovy&Grails-代码剪辑-日志跟踪

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

寡鸡蛋 ⋅ 2013/10/05 ⋅ 0

Groovy&Grails-代码剪辑-直接使用数据表

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

寡鸡蛋 ⋅ 2013/09/30 ⋅ 0

Groovy&Grails-代码剪辑-domain对象继承

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

寡鸡蛋 ⋅ 2013/10/03 ⋅ 0

Groovy&Grails-代码剪辑-修改主键

有的时候安全起见需要修改ID的生成方式,有时候因为特定的原因对ID字段需要自定义生成,更多的时候是比较无聊。修改ID字段的默认值 使用UUID方式生成ID 自定义ID的值 确实够无聊的。 附带一些...

寡鸡蛋 ⋅ 2013/10/02 ⋅ 0

Groovy&Grails-代码剪辑-常用数据库连接

DataSourceH2,也就是脚手架默认生成的. MySQL Oracle DB2

寡鸡蛋 ⋅ 2013/09/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 28分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 31分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 41分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部