Returning the Model
一个model本质上就是一个map,在视图渲染时使用。map中的keys转化为变量名,用于视图的获取。第一种方式是明确的return一个model:def show = {
[ book : Book.get( params.id ) ]
}
如果没有明确的 model被return,控制器(Controller)的属性将会被视为 model。
所以允许你这样编写代码:class BookController {
List books
List authors
def list = {
books = Book.list()
authors = Author.list()
}
}
这可能由于实际上控制器(Controller)是 prototype(原型)范围。换句话说,每个请求都会创建一个新的控制器(Controller)。 否则,像上面的代码,就不会
是线程安全的。
上面示例中,books 和 authors属性在视图中都是可用的。
一个更高级的方式就是 return 一个 Spring ModelAndView 类的实体:import org.springframework.web.servlet.ModelAndView
def index = {
def favoriteBooks = … // get some books just for the index page, perhaps your favorites
// forward to the list view to show them
return new ModelAndView("/book/list", [ bookList : favoriteBooks ])
}