Last updated by admin 3 years ago
Grails ???(Controllers)
???????
????????????????????????????????????????? ???????????????????"Controller"?????????"grails-app/controllers"????????????????????????URI???????????????action????????????????URI???????request-scoped?????????????????. ??Grails ???
I?????????????"create-controller"?? target????????????????????grails create-controller
class BookController { … }?????Actions?
??????????closure????????????????URI:class BookController {
@Property list = { // do controller logic
// create model return model
};
}???????
????????????(URI????????????????), ????????????"index"???:@Property index = {
redirect(action:list)
}@Property defaultAction = "list"???????request parameter??session?
????????????????????, ??????????????session?????????? ?????? (+)class BookController {
@Property find = {
def findBy = params["findBy"]
def appContext = servletContext["appContext"]
def loggedUser = session["logged_user"] // do stuff
// return model
return model
};
}??Flash Scope
Flash scope ?? Rails ?????????????????????????????????????????????????????????????????????@Property delete = {
def b = Book.get( params['id'] )
if(!b) {
flash['message'] = "User not found for id ${params['id']}"
redirect(action:list)
}
… // remaining code
}????????Model
??????????????web???, ????????????????????????????Grails ????"properties"????????? ?@Property save = {
def b = new Book()
b.properties = params
b.save()
}def sc = new SaveCommand()
bindData(sc, params)??Model
??model?????????????????map????????????model?????????????map??:@Property show = {
def b = Book.get( params['id'] )
return [ book : b ]
}class BookController {
@Property List books
@Property List authors
@Property list = {
books = Book.list()
authors = Author.list()
}
}??????
??????? (????Ajax ???) ??????????????????????????????? "render" ??:render "Hello World!"// write some markup
render {
for(b in books) {
div(id:b.id, b.title)
}
}
// render a specific view
render(view:'show')
// render a template for each item in a collection
render(template:'book_template', collection:B


