<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0

    使用render方法輸出XML

    Grails支持一些不同的方法來產生XML和JSON響應。第一個是隱式的通過render方法。

    render方法可以傳遞一個代碼塊來執行標記生成器產生XML

    def list = {
    def results = Book.list()
    render(contentType:"text/xml") {
    books {
    for(b in results) {
    book(title:b.title)
    }
    }
    }
    }

    這段代碼的結果將會像這樣:

    <books>
    <book title="The Stand" />
    <book title="The Shining" />
    </books>

    注意,當你使用標記生成器時,必須小心避免命名沖突。例如,這段代碼將產生一個錯誤:

    def list = {
    def books = Book.list()  // naming conflict here
    render(contentType:"text/xml") {
    books {
    for(b in results) {
    book(title:b.title)
    }
    }
    }
    }

    原因是,這里的一個本地變量books企圖作為方法被調用。

    使用render方法輸出JSON

    render 方法可以同樣被用于輸出JSON:

    def list = {
    def results = Book.list()
    render(contentType:"text/json") {
    books {
    for(b in results) {
    book(title:b.title)
    }
    }
    }
    }

    在這種情況下,結果就會是大致相同的:

    [
    {title:"The Stand"},
    {title:"The Shining"}
    ]

    同樣的命名沖突危險適用于JSON生成器。

    自動XML列集(Marshalling)

    (譯者注:在此附上對于列集(Marshalling)解釋:對函數參數進行打包處理得過程,因為指針等數據,必須通過一定得轉換,才能被另一組件所理解。可以說列集(Marshalling)是一種數據格式的轉換方法。)

    Grails同樣支持自動列集(Marshalling)領域類為XML通過特定的轉換器。

    首先,導入grails.converters 類包到你的控制器(Controllers)中:

    import grails.converters.*

    現在,你可以使用下列高度易讀的語法來自動轉換領域類成XML:

    render Book.list() as XML

    輸出結果看上去會像下列這樣:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <list>
    <book id="1">
    <author>Stephen King</author>
    <title>The Stand</title>
    </book>
    <book id="2">
    <author>Stephen King</author>
    <title>The Shining</title>
    </book>
    </list>

    一個使用轉換器的替代方法是使用Grails的codecs特性。codecs特性提供了encodeAsXML和encodeAsJSON方法:

    def xml = Book.list().encodeAsXML()
    render xml

     

    自動JSON列集(Marshalling)

    Grails同樣支持自動列集(Marshalling)為JSON通過同樣的機制。簡單替代XMLJSON

    render Book.list() as JSON

    輸出結果看上去會像下列這樣:

    [
    {"id":1,
    "class":"Book",
    "author":"Stephen King",
    "title":"The Stand"},
    {"id":2,
    "class":"Book",
    "author":"Stephen King",
    "releaseDate":new Date(1194127343161),
    "title":"The Shining"}
    ]

    再次作為一種替代,你可以使用encodeAsJSON達到相同的效果

    posted on 2008-06-05 16:21 周銳 閱讀(564) 評論(0)  編輯  收藏 所屬分類: Groovy&GrailsJavaJavaScriptXML
    主站蜘蛛池模板: 欧美亚洲国产SUV| 免费视频精品一区二区| 一级A毛片免费观看久久精品| 国内少妇偷人精品视频免费| 无码人妻一区二区三区免费手机 | 蜜桃精品免费久久久久影院| 久久国产成人精品国产成人亚洲| 18亚洲男同志videos网站| 国产精品观看在线亚洲人成网| 永久免费不卡在线观看黄网站| 在线观看免费成人| 亚洲国产成人一区二区精品区| 亚洲人成自拍网站在线观看| 在线免费观看伊人三级电影| 四虎www成人影院免费观看| 亚洲精品制服丝袜四区| 亚洲精品无码你懂的| 亚洲精品免费视频| 免费jjzz在在线播放国产| 亚洲系列中文字幕| 国产美女视频免费观看的网站| 日本zzzzwww大片免费| 亚洲日本韩国在线| 亚洲综合av一区二区三区不卡| 久久福利青草精品资源站免费| 免费一级一片一毛片| 亚洲18在线天美| 暖暖免费在线中文日本| 一本色道久久88亚洲综合| 77777亚洲午夜久久多喷| 日韩视频免费在线观看| 亚洲乱亚洲乱少妇无码| 亚洲综合欧美色五月俺也去| 99爱在线观看免费完整版| 色久悠悠婷婷综合在线亚洲| 豆国产96在线|亚洲| 国产免费毛不卡片| 亚洲激情中文字幕| 国产精品无码免费专区午夜 | 免费播放春色aⅴ视频| 亚洲高清一区二区三区|