<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支持一些不同的方法來產(chǎn)生XML和JSON響應(yīng)。第一個是隱式的通過render方法。

    render方法可以傳遞一個代碼塊來執(zhí)行標(biāo)記生成器產(chǎn)生XML

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

    這段代碼的結(jié)果將會像這樣:

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

    注意,當(dāng)你使用標(biāo)記生成器時(shí),必須小心避免命名沖突。例如,這段代碼將產(chǎn)生一個錯誤:

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

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

    使用render方法輸出JSON

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

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

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

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

    同樣的命名沖突危險(xiǎn)適用于JSON生成器。

    自動XML列集(Marshalling)

    (譯者注:在此附上對于列集(Marshalling)解釋:對函數(shù)參數(shù)進(jìn)行打包處理得過程,因?yàn)橹羔樀葦?shù)據(jù),必須通過一定得轉(zhuǎn)換,才能被另一組件所理解??梢哉f列集(Marshalling)是一種數(shù)據(jù)格式的轉(zhuǎn)換方法。)

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

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

    import grails.converters.*

    現(xiàn)在,你可以使用下列高度易讀的語法來自動轉(zhuǎn)換領(lǐng)域類成XML:

    render Book.list() as XML

    輸出結(jié)果看上去會像下列這樣:

    <?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>

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

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

     

    自動JSON列集(Marshalling)

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

    render Book.list() as JSON

    輸出結(jié)果看上去會像下列這樣:

    [
    {"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達(dá)到相同的效果

    posted on 2008-06-05 16:21 周銳 閱讀(553) 評論(0)  編輯  收藏 所屬分類: Groovy&GrailsJava 、JavaScript 、XML
    主站蜘蛛池模板: 亚洲av无码不卡私人影院| 亚洲熟女少妇一区二区| 亚洲国产精华液2020| 性色av无码免费一区二区三区| 亚洲最大中文字幕| AV无码免费永久在线观看| 亚洲欧洲综合在线| 亚洲国产精品免费观看| 亚洲伊人久久大香线蕉在观| 无码国产精品一区二区免费虚拟VR | 亚洲午夜无码毛片av久久京东热| 免费a级毛片无码a∨蜜芽试看| 亚洲AV无码一区二区三区人| 免费无码AV电影在线观看| 亚洲欧美精品午睡沙发| 日本高清免费网站| 麻豆va在线精品免费播放| 亚洲无线一二三四区手机| 国产午夜无码片免费| 色吊丝最新永久免费观看网站| 亚洲AV无码成人精品区狼人影院 | 亚洲视频免费观看| 久久久久久久91精品免费观看| 亚洲 欧洲 自拍 另类 校园| 四虎影视www四虎免费| 青草青草视频2免费观看| 中文字幕亚洲激情| 美女啪啪网站又黄又免费| 亚洲国产香蕉人人爽成AV片久久| 福利免费在线观看| 亚洲人成影院在线| 免费可以看黄的视频s色| 亚洲大尺度无码无码专线一区| 亚洲 小说区 图片区 都市| 中国一级特黄的片子免费 | 99999久久久久久亚洲| 日韩免费无砖专区2020狼| 一级黄色毛片免费看| 全部免费国产潢色一级| jizz18免费视频| 亚洲视频在线观看免费|