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 條目。