技术开发 频道

精通 Grails: GORM - 有趣的名称,严肃的技术

  数据验证

  除了指定字段顺序, static constraints 块还允许在里面放置一些验证规则。例如,可以在 String 字段上施加长度限制(默认是 255 个字符)。这样就能确保 String 值与指定的模式(例如电子邮件地址或 URL)匹配。甚至还能将字段设置为可选或必需的。关于可用的验证规则的完整列表,请参阅 Grails 的联机文档(请参阅 参考资料)。

  清单 8 显示的 Airline 类中在约束块内添加了验证规则:

  清单 8. 将数据验证添加到 Airline

class Airline {
  static constraints
= {
    name(blank:
false, maxSize:100)
    url(url:
true)
    frequentFlyer(blank:
true)
    notes(maxSize:
1500)  
  }

  static hasMany
= [trip:Trip]
    
  
String name
  
String url
  
String frequentFlyer
  
String notes

  
String toString(){
    return name
  }
}

  保存修改后的 Airline.groovy 文件,在浏览器中新建一条航线。如果违反了验证规则,会收到警告,如图 4 所示:

  图 4. 验证警告  

  可以在 grails-app/i18n 目录的 messages.properties 文件中对警告消息进行自定义。请注意,默认的消息已经用多种语言进行了本地化(请参阅 Grail 联机文档中的验证一节,了解如何在每个类、每个字段的基础上创建自定义消息)。

  清单 8 中的多数约束只影响视图层,但是有两个约束也会影响持久层。例如,数据库中的 name 列现在是 100 个字符长。notes 字段除了从输入字段转为视图的文本区域之外(对于大于 255 个字符的字段会进行这个转换),还从 VARCHAR 列转为 TEXT、CLOB 或 BLOB 列。这些转变取决于在后台使用的数据库类型和它的 Hibernate 方言 — 当然,这些也是可以修改的。

0
相关文章