20130516-Grails In Action-4、讓模型工作(01小節)

內容簡介

  • 理解腳手架
  • 客戶化腳手架
  • 動態查詢器
  • 高級查詢

上一章花了很多時間建立領域模型,這一章就要看怎麼用了。

1、先給所有的模型創建控制器

grails create-controller com.grailsinaction.User
grails create-controller com.grailsinaction.Profile
grails create-controller com.grailsinaction.Post
grails create-controller com.grailsinaction.Tag

 2、修改所有的Controller,裝入自動腳手架

1 package com.grailsinaction
2 
3 class TagController {
4 
5     def scaffold = true
6 }

3、運行系統,就能看到自動腳手架的威力了,慢慢體會

grails run-app
http://localhost:8080/hubbu

4、回頭看看建立模型時的一些驗證,在頁面上操作時應該都是有效的,如:

User

1     static constraints = {
2         password(size: 6..8, validator: { passwd, user ->
3             passwd != user.userId
4         })
5         dateCreated()
6         profile(nullable: true)
7     }

Profile

 1     static constraints = {
 2         fullName(nullable: true)
 3         bio(nullable: true, maxSize: 1000)
 4         homepage(url: true, nullable: true)
 5         email(email: true, nullable: true)
 6         photo(nullable: true)
 7         country(nullable: true)
 8         timezone(nullable: true)
 9         jabberAddress(email: true, nullable: true)
10     }

不過,錯誤提示有點難懂,不像是給最終用戶看的。所以提示的內容需要客戶化

5、客戶化錯誤提示

打開/grails-app/i18n/messages.properties就能看到所有系統中已有的錯誤提示,修改一下就行了,如果使用的是中文環境,就直接修改messages_zh_CN.properties文件即可,這裏主要的內容是參數傳遞需要理解

{0} 屬性
{1} 類
{2} 值
{3} 從
{4} 到

6、我們在使用自動生成的頁面可以看到,組合框選擇關聯關係對象時,是使用的對象ID,這個選擇很不友好,我們可以用toString()方法修改對象的默認顯示內容
,如Profile

1     String toString() {
2         "Profile for ${fullName} (${id})"
3     }

使用下拉選擇時的內容就是一個字符串了。

7、我們發現只要建立好腳手架,所有功能都已經完成了,只是有些地方不是很友好而已。這裏有個問題,我們真的要使用腳手架產生的應用嗎?當我們的業務邏輯變的很複雜,模型很龐大的時候,就不那麼好組織這些功能了,所以,官方文檔的建議還是自定義UI。下面我們就開始調整頁面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章