內容簡介
- 理解腳手架
- 客戶化腳手架
- 動態查詢器
- 高級查詢
上一章花了很多時間建立領域模型,這一章就要看怎麼用了。
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。下面我們就開始調整頁面