RSS and Atom

    AbstractAtomFeedView 和 AbstractRssFeedView 都继承自 AbstractFeedView 基类,分别用于提供 Atom 和 RSS Feed 视图。它们都是基于 ROME 项目,位于 org.springframework.web.servlet.view.feed.SpringFeedView包中。

    AbstractAtomFeedView 要求你实现 buildFeedEntries()方法,并且可以选择覆盖 buildFeedMetadata()方法(默认实现为空)。下面的例子展示了如何做到这一点:

    1. public class SampleContentAtomView extends AbstractAtomFeedView {
    2. @Override
    3. protected void buildFeedMetadata(Map<String, Object> model,
    4. Feed feed, HttpServletRequest request) {
    5. // 实施省略
    6. }
    7. @Override
    8. protected List<Entry> buildFeedEntries(Map<String, Object> model,
    9. HttpServletRequest request, HttpServletResponse response) throws Exception {
    10. // 实施省略
    11. }
    12. }

    类似的要求也适用于实现 AbstractRssFeedView,正如下面的例子所示:

    1. public class SampleContentRssView extends AbstractRssFeedView {
    2. @Override
    3. protected void buildFeedMetadata(Map<String, Object> model,
    4. Channel feed, HttpServletRequest request) {
    5. // 实施省略
    6. }
    7. @Override
    8. protected List<Item> buildFeedItems(Map<String, Object> model,
    9. HttpServletRequest request, HttpServletResponse response) throws Exception {
    10. // 实施省略
    11. }
    12. }

    buildFeedItems()buildFeedEntries()方法传入 HTTP 请求,以备你需要访问 Locale。HTTP 响应仅在设置 cookies 或其他 HTTP 头时传入。在方法返回后,feed 会自动写入响应对象中。

    关于创建 Atom 视图的例子,见 Alef Arendsen 的 Spring 团队博客文章