public abstract class AbstractFeedView<T extends WireFeed> extends AbstractView
>NOTE: As of Spring 4.1, this is based on the com.rometools
variant of ROME, version 1.5. Please upgrade your build dependency.
Application-specific view classes will typically extend from either
AbstractRssFeedView
or AbstractAtomFeedView
instead of from this class.
Thanks to Jettro Coenradie and Sergio Bossa for the original feed view prototype!
AbstractRssFeedView
,
AbstractAtomFeedView
DEFAULT_CONTENT_TYPE
logger
PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE, SELECTED_CONTENT_TYPE
Constructor and Description |
---|
AbstractFeedView() |
Modifier and Type | Method and Description |
---|---|
protected abstract void |
buildFeedEntries(java.util.Map<java.lang.String,java.lang.Object> model,
T feed,
HttpServletRequest request,
HttpServletResponse response)
Subclasses must implement this method to build feed entries, given the model.
|
protected void |
buildFeedMetadata(java.util.Map<java.lang.String,java.lang.Object> model,
T feed,
HttpServletRequest request)
Populate the feed metadata (title, link, description, etc.).
|
protected abstract T |
newFeed()
Create a new feed to hold the entries.
|
protected void |
renderMergedOutputModel(java.util.Map<java.lang.String,java.lang.Object> model,
HttpServletRequest request,
HttpServletResponse response)
Subclasses must implement this method to actually render the view.
|
addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getRequestToExpose, getStaticAttributes, isExposePathVariables, prepareResponse, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposeContextBeansAsAttributes, setExposedContextBeanNames, setExposePathVariables, setRequestContextAttribute, setResponseContentType, toString, writeToResponse
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext
protected final void renderMergedOutputModel(java.util.Map<java.lang.String,java.lang.Object> model, HttpServletRequest request, HttpServletResponse response) throws java.lang.Exception
AbstractView
The first step will be preparing the request: In the JSP case, this would mean setting model objects as request attributes. The second step will be the actual rendering of the view, for example including the JSP via a RequestDispatcher.
renderMergedOutputModel
in class AbstractView
model
- combined output Map (never null
),
with dynamic values taking precedence over static attributesrequest
- current HTTP requestresponse
- current HTTP responsejava.lang.Exception
- if rendering failedprotected abstract T newFeed()
protected void buildFeedMetadata(java.util.Map<java.lang.String,java.lang.Object> model, T feed, HttpServletRequest request)
Default is an empty implementation. Subclasses can override this method to add meta fields such as title, link description, etc.
model
- the model, in case meta information must be populated from itfeed
- the feed being populatedrequest
- in case we need locale etc. Shouldn't look at attributes.protected abstract void buildFeedEntries(java.util.Map<java.lang.String,java.lang.Object> model, T feed, HttpServletRequest request, HttpServletResponse response) throws java.lang.Exception
Note that the passed-in HTTP response is just supposed to be used for setting cookies or other HTTP headers. The built feed itself will automatically get written to the response after this method returns.
model
- the model Mapfeed
- the feed to add entries torequest
- in case we need locale etc. Shouldn't look at attributes.response
- in case we need to set cookies. Shouldn't write to it.java.lang.Exception
- any exception that occurred during building