RSS 和 Atom
从 Spring Framework 7.0 开始,org.springframework.web.servlet.view.feed 包中的视图类已被弃用。取而代之的是,库可以调整此现有代码以提供其自己的 *View 类型支持。作为替代方案,应用程序可以在 Web 处理程序中执行直接渲染。 |
AbstractAtomFeedView 和 AbstractRssFeedView 都继承自 AbstractFeedView 基类,分别用于提供 Atom 和 RSS Feed 视图。它们基于 ROME 项目,位于 org.springframework.web.servlet.view.feed 包中。
AbstractAtomFeedView 要求您实现 buildFeedEntries() 方法并可选地覆盖 buildFeedMetadata() 方法(默认实现为空)。以下示例展示了如何实现:
-
Java
-
Kotlin
public class SampleContentAtomView extends AbstractAtomFeedView {
@Override
protected void buildFeedMetadata(Map<String, Object> model,
Feed feed, HttpServletRequest request) {
// implementation omitted
}
@Override
protected List<Entry> buildFeedEntries(Map<String, Object> model,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// implementation omitted
}
}
class SampleContentAtomView : AbstractAtomFeedView() {
override fun buildFeedMetadata(model: Map<String, Any>,
feed: Feed, request: HttpServletRequest) {
// implementation omitted
}
override fun buildFeedEntries(model: Map<String, Any>,
request: HttpServletRequest, response: HttpServletResponse): List<Entry> {
// implementation omitted
}
}
实现 AbstractRssFeedView 也有类似的要求,如下例所示:
-
Java
-
Kotlin
public class SampleContentRssView extends AbstractRssFeedView {
@Override
protected void buildFeedMetadata(Map<String, Object> model,
Channel feed, HttpServletRequest request) {
// implementation omitted
}
@Override
protected List<Item> buildFeedItems(Map<String, Object> model,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// implementation omitted
}
}
class SampleContentRssView : AbstractRssFeedView() {
override fun buildFeedMetadata(model: Map<String, Any>,
feed: Channel, request: HttpServletRequest) {
// implementation omitted
}
override fun buildFeedItems(model: Map<String, Any>,
request: HttpServletRequest, response: HttpServletResponse): List<Item> {
// implementation omitted
}
}
buildFeedItems() 和 buildFeedEntries() 方法传入 HTTP 请求,以防您需要访问 Locale。HTTP 响应仅用于设置 cookie 或其他 HTTP 头。方法返回后,Feed 会自动写入响应对象。
有关创建 Atom 视图的示例,请参阅 Alef Arendsen 的 Spring Team Blog 条目。