asdtiang的博客 感謝blogjava提供的博客交流平臺

          grails 學習記--command-controller

          Posted on 2011-04-29 15:00 asdtiang 閱讀(847) 評論(0)  編輯  收藏
          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 //防止重復(fù)提交表單

          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 { … }
          }


          天蒼蒼,野茫茫,風吹草底見牛羊

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          posts - 80, comments - 24, trackbacks - 0, articles - 32

          Copyright © asdtiang

          asdtiang的博客 PaidMailz
          點擊廣告網(wǎng)賺A(每天4個廣告,每個0.0025美元,一個搜索廣告0.03美元)
          主站蜘蛛池模板: 龙岩市| 贺兰县| 南溪县| 富锦市| 天全县| 新竹市| 聂荣县| 阳信县| 常宁市| 通河县| 兰坪| 罗定市| 灵山县| 汽车| 苏尼特右旗| 武强县| 海晏县| 阿瓦提县| 彭阳县| 渭南市| 德令哈市| 中牟县| 吴堡县| 沧州市| 南投市| 长汀县| 会同县| 志丹县| 涟水县| 富源县| 托克逊县| 吉林省| 乐平市| 雷波县| 秦安县| 德昌县| 河源市| 博爱县| 龙岩市| 昔阳县| 荃湾区|