2011-03-16 33 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()会将该表的全部内容加载到服务器的内存中。如果它足够大,你的服务器会在最坏的情况下出现内存不足错误,并且随着时间的推移会变得最慢。

相关问题