И класс AbstractAtomFeedView
, и класс AbstractRssFeedView
наследуются от базового класса AbstractFeedView
и используются для передачи представлений веб-каналов Atom и RSS соответственно. Они основаны на проекте ROME и находятся в пакете org.springframework.web.servlet.view.feed
.
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 {
/// реализация опущена
}
}
class SampleContentAtomView : AbstractAtomFeedView() {
override fun buildFeedMetadata(model: Map<String, Any>,
feed: Feed, request: HttpServletRequest) {
/// реализация опущена
}
override fun buildFeedEntries(model: Map<String, Any>,
request: HttpServletRequest, response: HttpServletResponse): List<Entry> {
/// реализация опущена
}
}
Аналогичные требования применяются и для реализации 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 {
/// реализация опущена
}
}
class SampleContentRssView : AbstractRssFeedView() {
override fun buildFeedMetadata(model: Map<String, Any>,
feed: Channel, request: HttpServletRequest) {
/// реализация опущена
}
override fun buildFeedItems(model: Map<String, Any>,
request: HttpServletRequest, response: HttpServletResponse): List<Item> {
/// реализация опущена
}
}
Методы buildFeedItems()
и buildFeedEntries()
передают HTTP-запрос, в случае если необходимо получить доступ к региональным настройкам. HTTP-ответ передается только для установки cookies или других HTTP-заголовков. Канал автоматически записывается в объект ответа после возврата метода.
Пример создания представления канала Atom см. в посте Алефа Арендсена в боле команды Spring.