Grails:使用index.gsp中的controller

时间:2010-11-25 16:31:08

标签: grails gsp

我是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打印信息?

由于

1 个答案:

答案 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>