使用Grails和Rome产生Rss

写的好,我收藏起来慢慢看. 写的好,我支持一下. 没什么意思,把他踩下去. 阅读次数:74 | 订阅者:山下的人 | 来源:山下的人 | 文章作者: wenson | 发表时间: 2008-09-08



作者: wenson 
链接:http://wenson.javaeye.com/blog/239355 
发表时间: 2008年09月08日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

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的类。
 

view plaincopy to clipboardprint?

import com.sun.syndication.feed.synd.*;  
import com.sun.syndication.io.SyndFeedOutput;  
              
class FeedController {  
      
    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"]  
  
                 
                               
      
    def rss = {  
              
            render(text: getFeed("rss_1.0"), contentType:"text/xml", encoding:"UTF-8")  
      
    }  
      
    def atom = {  
              
            render(text: getFeed("atom_1.0"), contentType:"text/xml", encoding:"UTF-8")  
                      
    }  
  
    // or specify your own feed type  
    def all = {  
            def format = params.id  
            if (supportedFormats.contains(format)) {  
                render(text: getFeed(format), contentType:"text/xml", encoding:"UTF-8")  
            } else {  
                response.sendError(response.SC_FORBIDDEN);  
            }                 
    }  
      
      
    def getFeed(feedType) {  
          
        def items = Post.list(max: 5, sort: "created", order: "desc")  
              
        def entries = []  
        items.each { item ->  
            def desc = new SyndContentImpl(type: "text/plain", value: item.description);  
            def entry = new SyndEntryImpl(title: item.name + " - " + item.summary,   
                    link: 'http://www.ondev.net/item/show/' + item.name,  
                    publishedDate: item.created, description: desc);  
            entries.add(entry);  
  
        }  
        SyndFeed feed = new SyndFeedImpl(feedType: feedType, title: '标题',  
                link: 'http://www.ondev.net', description: '说明性文字',  
                entries: entries);  
          
        StringWriter writer = new StringWriter();  
        SyndFeedOutput output = new SyndFeedOutput();  
        output.output(feed,writer);  
        writer.close();  
          
        return writer.toString();  
  
          
    }  
      
}  

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

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


已有 0 人发表留言,猛击->>这里<<-参与讨论


JavaEye推荐

北京: 千橡集团暨校内网诚聘软件研发工程师搜狐网站诚聘Java、PHP和C++工程师


技能云友情提示您: 如果您对本文观点感兴趣,欢迎到原文出处讨论,谢谢!