2011-03-16 63 views
0

我想從我的sql數據庫中獲取一些數據並將其寫入到.gsp頁面。要做到這一點,我做了以下內容:Grails處理來自sql數據庫的信息

<% 
    def temp = dbname.Road.list() 
%> 

<strong>Name:</strong>${temp.name} 
<strong>Local:</strong>${temp.local} 

,這將給以下的輸出:

名稱:皮卡迪利

地方:倫敦

我的老師告訴我, Grails通過控制器工作,儘管這種方式沒有錯,但我應該改變它,以便我需要從數據庫中獲取信息並在控制器中返回,並且n沒有直接訪問。我需要一個這方面的手..感謝先進。

回答

4

這絕對是錯誤的做法。 Grails與否,在視圖中放置這樣的代碼是一個巨大的反模式。 grails的方式是建立一個Road域。並有一個RoadController。

class Road { 
    String name 
    String local 
} 

class RoadController { 
    def list = { 
     [roadList: Road.list()] 
    } 
} 

然後,你將有位於的grails-app /視圖/路/對的list.gsp渲染模型來自控制器的一個的list.gsp。

<ul> 
<g:each in="${roadList}"> 
    <li>Name: ${it.name}, Locale: ${it.local}</li> 
</g:each> 
</ul> 

所以訪問,這將是簡單:

http://localhost:8080/youApp/road/list

這是非常基本的Grails的東西,你可以在數以百計的教程和書籍發現,如果您使用的Grails提供的腳手架,你甚至不需要編寫代碼。做一些Google搜索。

0

請記住,執行list()會將該表的全部內容加載到服務器的內存中。如果它足夠大,你的服務器會在最壞的情況下出現內存不足錯誤,並且隨着時間的推移會變得最慢。

相關問題