grails 学习记--command-controller

grails 命令:
shell
console   //启动一个类似groovy 的console,console里可以访问domain.service等。



controller里的已有变量(自己不常用的记下,其它的查看文档,例如request,reponse)

actionName

Purpose

Returns the name of the currently executing action.


controllerName

Purpose

Returns the name of the currently executing controller.

defaultAction

Purpose

Allows you to explicitly specify the default action that should be executed if no action is specified in the URI.

Examples

class BookController {
static defaultAction = "list"
def list = {
[books:Book.list()]
}
}

grailsApplication

Purpose

An instance of the org.codehaus.groovy.grails.commons.GrailsApplication class.

Examples

class BookController {
def list = {
def bookClass = grailsApplication.classLoader.loadClass("Book")
[book:bookClass.newInstance()]
}
}

Description

The GrailsApplication class provides information about the conventions within Grails and access to metadata, config and the ClassLoader






servletContext

Purpose

The servletContext object is an instance of the Servlet API's ServletContext class.

Examples

class BookController {
def doSomething = {
def input
try {
input = servletContext.getResourceAsStream("/WEB-INF/myscript.groovy")
def result = new GroovyShell().evaluate(input.text)
render result
}
finally {
input.close()
}

} }

Description

The Servlet API's ServletContext is useful for, amongst other things, storing global application attributes, reading local server resources and establishing information about the servlet container.







withForm //防止重复提交表单

Purpose

Used to handle duplicate form submissions.

Examples

withForm {
// good request
}.invalidToken {
// bad request
}

Description

The withForm method requires the use of the useToken attribute in a form

<g:form useToken="true" ...>

Then in your controller code you can use the withForm method to handle valid and invalid requests:

withForm {
// good request
}.invalidToken {
// bad request
}





withFormat

Purpose

Used to execute different responses based on the incoming request Accept header, format parameter or URI extension. See content negotiation for more information.

Examples

import grails.converters.*

class BookController { def books def list = { this.books = Book.list() withFormat { html bookList:books js { render "alert('hello')" } xml { render books as XML } } } }

Description

The withFormat method takes a block within the scope of which you can execute different methods whose names match the content type you want to respond to. For example:

withFormat {
html bookList:books
js { render "alert('hello')" }
xml { render books as XML }
}

Here we invoke three methods called html, js and xml that use mime type names configured in grails-app/conf/Config.groovy (See content negotiation for more information). The call to html accepts a model (a map) which is passed on to the view. Grails will first search for a view called grails-app/views/book/list.html.gsp and if that is not found fallback to grails-app/views/book/list.gsp.

Note that the order of the types is significant if either the request format is "all" or more than one content type has the same "q" rating in the accept header. In the former case, the first type handler in the block is executed ("html" in the short example above). The latter case is more confusing because it only holds if there is more than one content type with the highest "q" rating for which you have a type handler and you have more than one type handler matching that "q" rating. For example, say the request has "text/html" and "application/xml" with a "q" rating of 1.0, then this code:

withFormat {
xml { … }
html { … }
}


天苍苍,野茫茫,风吹草底见牛羊

你可能感兴趣的:(grails 学习记--command-controller)