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的类。
- 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就可以了