AbstractAtomFeedView 和 AbstractRssFeedView 都继承自 AbstractFeedView 基类,分别用于提供 Atom 和 RSS Feed 视图。它们都是基于 ROME 项目,位于 org.springframework.web.servlet.view.feed.SpringFeedView包中。
AbstractAtomFeedView 要求你实现 buildFeedEntries()方法,并且可以选择覆盖 buildFeedMetadata()方法(默认实现为空)。下面的例子展示了如何做到这一点:
public class SampleContentAtomView extends AbstractAtomFeedView {@Overrideprotected void buildFeedMetadata(Map<String, Object> model,Feed feed, HttpServletRequest request) {// 实施省略}@Overrideprotected List<Entry> buildFeedEntries(Map<String, Object> model,HttpServletRequest request, HttpServletResponse response) throws Exception {// 实施省略}}
类似的要求也适用于实现 AbstractRssFeedView,正如下面的例子所示:
public class SampleContentRssView extends AbstractRssFeedView {@Overrideprotected void buildFeedMetadata(Map<String, Object> model,Channel feed, HttpServletRequest request) {// 实施省略}@Overrideprotected List<Item> buildFeedItems(Map<String, Object> model,HttpServletRequest request, HttpServletResponse response) throws Exception {// 实施省略}}
buildFeedItems() 和 buildFeedEntries()方法传入 HTTP 请求,以备你需要访问 Locale。HTTP 响应仅在设置 cookies 或其他 HTTP 头时传入。在方法返回后,feed 会自动写入响应对象中。
关于创建 Atom 视图的例子,见 Alef Arendsen 的 Spring 团队博客文章。
