posts - 431,  comments - 344,  trackbacks - 0

          Grails本身好像并沒有產生rss的插件。如果要用grails產生Rss,可以使用Rome。方法大概如下:

          下載需要的庫文件

          https://rome.dev.java.net/下載Rome,之后把rome-xxx.jar放到你的grails項目的lib目錄下。這里xxx是版本號。比如我的是rome-1.0RC1.jar

          再到http://www.jdom.org/下載JDom。之后同樣是把jdom.jar放到lib目錄下。

          書寫代碼

          創建一個controller,當然你也可以在你已經有的controller里面增加相應方法。這里我們創建一個叫做FeedController的類。

           1 import com.sun.syndication.feed.synd.*;   
           2 import com.sun.syndication.io.SyndFeedOutput;   
           3                
           4 class FeedController {   
           5        
           6     def supportedFormats = [ "rss_0.90""rss_0.91""rss_0.92""rss_0.93""rss_0.94""rss_1.0""rss_2.0""atom_0.3"]   
           7   
           8                   
           9                                 
          10        
          11     def rss = {   
          12                
          13             render(text: getFeed("rss_1.0"), contentType:"text/xml", encoding:"UTF-8")   
          14        
          15     }   
          16        
          17     def atom = {   
          18                
          19             render(text: getFeed("atom_1.0"), contentType:"text/xml", encoding:"UTF-8")   
          20                        
          21     }   
          22   
          23     // or specify your own feed type   
          24     def all = {   
          25             def format = params.id   
          26             if (supportedFormats.contains(format)) {   
          27                 render(text: getFeed(format), contentType:"text/xml", encoding:"UTF-8")   
          28             } else {   
          29                 response.sendError(response.SC_FORBIDDEN);   
          30             }                  
          31     }   
          32        
          33        
          34     def getFeed(feedType) {   
          35            
          36         def items = Post.list(max: 5, sort: "created", order: "desc")   
          37                
          38         def entries = []   
          39         items.each { item ->   
          40             def desc = new SyndContentImpl(type: "text/plain", value: item.description);   
          41             def entry = new SyndEntryImpl(title: item.name + " - " + item.summary,    
          42                     link: 'http://www.ondev.net/item/show/' + item.name,   
          43                     publishedDate: item.created, description: desc);   
          44             entries.add(entry);   
          45   
          46         }   
          47         SyndFeed feed = new SyndFeedImpl(feedType: feedType, title: '標題',   
          48                 link: 'http://www.ondev.net', description: '說明性文字',   
          49                 entries: entries);   
          50            
          51         StringWriter writer = new StringWriter();   
          52         SyndFeedOutput output = new SyndFeedOutput();   
          53         output.output(feed,writer);   
          54         writer.close();   
          55            
          56         return writer.toString();   
          57   
          58            
          59     }   
          60        
          61 }  
          62 

          之后訪問相應的頁面,比如說http://www.ondev.net/feed/rss就可以了

          原貼地址: http://www.ondev.net/story/show/75

          posted on 2008-09-07 22:53 周銳 閱讀(292) 評論(0)  編輯  收藏 所屬分類: Groovy&Grails
          主站蜘蛛池模板: 鄱阳县| 衡阳市| 正蓝旗| 永丰县| 卓尼县| 平利县| 攀枝花市| 洪雅县| 康定县| 柳州市| 公安县| 满洲里市| 东宁县| 普格县| 自贡市| 平安县| 革吉县| 鄂尔多斯市| 溧阳市| 新绛县| 自贡市| 怀仁县| 美姑县| 慈溪市| 饶平县| 临漳县| 拉萨市| 龙游县| 台北市| 砀山县| 格尔木市| 崇阳县| 志丹县| 三河市| 潜江市| 安陆市| 松滋市| 凌源市| 娄烦县| 科技| 黎城县|