AbstractAtomFeedView 和 AbstractRssFeedView 都继承自 AbstractFeedView 基类,分别用于提供 Atom 和 RSS Feed 视图。它们都是基于 ROME 项目,位于 org.springframework.web.servlet.view.feed.SpringFeedView
包中。
AbstractAtomFeedView 要求你实现 buildFeedEntries()
方法,并且可以选择覆盖 buildFeedMetadata()
方法(默认实现为空)。下面的例子展示了如何做到这一点:
public class SampleContentAtomView extends AbstractAtomFeedView {
@Override
protected void buildFeedMetadata(Map<String, Object> model,
Feed feed, HttpServletRequest request) {
// 实施省略
}
@Override
protected List<Entry> buildFeedEntries(Map<String, Object> model,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// 实施省略
}
}
类似的要求也适用于实现 AbstractRssFeedView,正如下面的例子所示:
public class SampleContentRssView extends AbstractRssFeedView {
@Override
protected void buildFeedMetadata(Map<String, Object> model,
Channel feed, HttpServletRequest request) {
// 实施省略
}
@Override
protected 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 团队博客文章。