2012年4月26日木曜日

grailsとROMEでRSS/ATOMの内容を表示する

grailsとROMEでRSS/ATOMの内容を表示するには、以下の手順を実行します。

1. BuildConfig.groovyでROMEのライブラリを指定します。
...省略...
    repositories {
        inherits true // Whether to inherit repository definitions from plugins
        grailsPlugins()
        grailsHome()
        grailsCentral()
        mavenCentral()

        // uncomment these to enable remote dependency resolution from public Maven repositories
// mavenCentral()をuncommentする
mavenCentral()
        //mavenLocal()
        //mavenRepo "http://snapshots.repository.codehaus.org"
        //mavenRepo "http://repository.codehaus.org"
        //mavenRepo "http://download.java.net/maven/2/"
        //mavenRepo "http://repository.jboss.com/maven2/"
    }
    dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
// ROMEのライブラリを指定
runtime 'rome:rome:1.0'
        // runtime 'mysql:mysql-connector-java:5.1.16'
    }
...省略...
2. コントローラークラスで以下のようなコードを記述します。
package yourpackage
import com.sun.syndication.feed.synd.*
import com.sun.syndication.io.* 

class RssController
{
  def index()
  {
    def uri = "http://groovyarekore.blogspot.com/feeds/posts/default"
    return [feed:new SyndFeedInput(false).build(
      new InputStreamReader(new URL(uri).openStream(), "UTF-8")
    )]
  }
}
3. ビューに以下のようなマークアップを記述します。
<!-- RSSの内容を出力 -->
  <h2>${feed.title}</h2>
  <ul>
    <g:each in="${feed.entries}" status="i" var="entry">
      <li>${entry.publishedDate.format('yyyy/MM/dd(E)')}:<a href="${entry.link}" target="_blank">${entry.title}</a>
      </li>
    </g:each>
  </ul>
出力画面

動作環境
grails 2.0.1

関連情報
groovyとROMEでATOM/RSSフィードのエントリを取得する
http://groovyarekore.blogspot.jp/2009/09/groovyromeatomrss.html

0 件のコメント:

コメントを投稿