使用Grails和Rome产生Rss

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. }  

 

之后访问相应的页面,比如说http://www.ondev.net/feed/rss就可以了

转自: http://www.ondev.net/story/show/75;jsessionid=F309C69F29088C3FF0C1DFFAA7255AF5

你可能感兴趣的:(.net,xml,sun,grails)