2011-12-16 40 views
0

我是新來的聖盃,請給我想法如何應用約束在列表中顯示列後顯示在腳手架真正的控制器,即我有列中的列 - 名稱,電子郵件,密碼,電話,但我想只顯示名單,電子郵件和電話在網格列表將顯示時,有沒有辦法通過域做到這一點?請給我一個解決方案,謝謝。Grails:如何在列表中顯示列應用約束

+0

僅在列表或對所有腳手架的觀點說域類? – 2013-12-20 13:15:08

回答

2

可以安裝模板(http://grails.org/doc/latest/ref/Command%20Line/install-templates.html)

grails install-templates 

模板給你一個方法可以覆蓋Grails在控制器,視圖等中使用的默認模板。如果您查看src/templates/scaffolding/list.gsp,您可以看到它們已經排除了某些屬性('id'和'version')。我添加了一個靜態列表到我的域類:

static excludedFromListViewProperties = ["password"] 

在我取代的list.gsp:

<% excludedProps = Event.allEvents.toList() << 'id' << 'version'       
allowedNames = domainClass.persistentProperties*.name << 'dateCreated' << 'lastUpdated' 

有:

<% excludedProps = Event.allEvents.toList() << 'id' << 'version' 
excludedProps.addAll(domainClass.getClazz().excludedFromListViewProperties ?: []) 
allowedNames = domainClass.persistentProperties*.name << 'dateCreated' << 'lastUpdated' 

讓我知道,如果不工作爲你。

+0

謝謝..它的作品給我。 – Anu 2011-12-17 04:48:19

0

腳手架讓事情落後於現場。您可以通過生成所有的意見和特定域類的控制器:執行命令

grails generate-all packageName.DomainClass 

後,您可以簡單地改變所產生的控制器和視圖,如你所願。

+0

是的,我知道,但我不必這樣做。有沒有辦法對列表中顯示的列應用一些限制? – Anu 2011-12-16 10:11:34

0

你可以看看Dynamic Scaffolding其中規定

此外,標準支架意見期望形式InstanceList集合和實例的單個實例的模型變量。使用'書籍'和'書'等屬性是很誘人的,但這些都不起作用。

因此,也許你可以通過只返回你想要的字段來覆蓋你的腳手架操作。但是您可能需要一箇中間數據類型,我認爲。這是探索

0

稍微改善震動的回答是檢查excludedFromListViewProperties財產存在的版本:

domainClass.getClazz().metaClass.properties.findAll{ 
    if (it.name == "excludedFromListViewProperties"){ 
     excludedProps.addAll(domainClass.getClazz().excludedFromListViewProperties ?: []) 
    } 
}