RSS-Feeds mit Rome & Spring 2.5
Gepostet in Java, Spring MVC
Problem: Wie erzeuge ich einen RSS-Feed mit Rome und Spring MVC
Lösung:
Man lädt sich Rome und Spring Modules herunter und packt beide Jars in seinen Classpath.
Danach erzeugt man einen RSSView:
public class RSSView extends AbstractRssView
{
private static final String[] FEED_TYPE = {"rss_0.90","rss_0.91","rss_0.92","rss_0.93","rss_0.94","rss_1.0","rss_2.0","atom_0.3"};
private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd");
private String description;
/**
* Generates the Feed.
*/
@SuppressWarnings("unchecked")
@Override
protected void buildFeed(Map model, HttpServletRequest request, HttpServletResponse response, SyndFeed feed)
{
feed.setFeedType(FEED_TYPE[6]);
feed.setTitle("Peters Feeds");
feed.setLink(getBaseUrl());
feed.setDescription(description);
SyndImage image = new SyndImageImpl();
image.setLink(getBaseUrl());
image.setUrl("URLTOIMAGE");
image.setDescription(description);
image.setTitle("Peter");
feed.setImage(image);
List entries = new ArrayList();
SyndEntry entry;
entry = new SyndEntryImpl();
entry.setTitle("Rome v1.0");
entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01");
entry.setPublishedDate(DATE_PARSER.parse("2004-06-08"));
description = new SyndContentImpl();
description.setType("text/plain");
description.setValue("Initial release of Rome");
entry.setDescription(description);
entries.add(entry);
entry = new SyndEntryImpl();
entry.setTitle("Rome v2.0");
entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02");
entry.setPublishedDate(DATE_PARSER.parse("2004-06-16"));
description = new SyndContentImpl();
description.setType("text/plain");
description.setValue("Bug fixes, minor API changes and some new features");
entry.setDescription(description);
entries.add(entry);
feed.setEntries(entries);
}
public void setDescription(String description)
{
this.description = description;
}
}
Anschließend erzeugt man den dazugehörigen Controller:
public class RssFeedController implements Controller
{
@Override
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception
{
return new ModelAndView("rSSView");
}
}
Als Letztes verdrahtet man alles in seiner dispatcher.xml:
...RssFeedController ...
… ab Version 3.0 des Springframework kann man das ganz einfach so machen.