8

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

谢谢

4

1 回答 1

18

通常,当使用模型-视图-控制器模式时,您不希望您的视图了解有关控制器的任何信息。控制器的工作是将模型提供给视图。因此,与其让 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>
于 2010-11-25T17:07:23.327 回答