我是grails的新手,我想使用index.gsp中特定控制器的方法
在Index.gsp中我试过
<g:each in="${MyController.myList}" var="c">
<p>${c.name}</p>
</g:each>
但它说该物业不可用。
MyController包含如下属性:
def myList = {
return [My.findAll() ]
}
我做错了什么?关于grails-parts之间的沟通是否有一个很好的教程?
或者有没有更好的方法通过gsp打印信息?
由于
答案 0 :(得分:18)
通常,在使用Model-View-Controller模式时,您不希望视图知道有关控制器的任何信息。控制器的工作是将模型提供给视图。因此,不应让index.gsp直接响应请求,而应该让控制器处理它。然后,控制器可以获取所有必需的域对象(模型),并将它们传递给视图。例如:
// UrlMappings.groovy
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(controller:"index") // instead of linking the root to (view:"/index")
"500"(view:'/error')
}
}
// IndexController.groovy
class IndexController {
def index() { // index is the default action for any controller
[myDomainObjList: My.findAll()] // the model available to the view
}
}
// index.gsp
<g:each in="${myDomainObjList}" var="c">
<p>${c.name}</p>
</g:each>