public interface View
This class and the MVC approach associated with it is discussed in Chapter 12 of Expert One-On-One J2EE Design and Development by Rod Johnson (Wrox, 2002).
View implementations may differ widely. An obvious implementation would be JSP-based. Other implementations might be XSLT-based, or use an HTML generation library. This interface is designed to avoid restricting the range of possible implementations.
Views should be beans. They are likely to be instantiated as beans by a ViewResolver. As this interface is stateless, view implementations should be thread-safe.
AbstractView
,
InternalResourceView
Modifier and Type | Field and Description |
---|---|
static String |
PATH_VARIABLES
Name of the
HttpServletRequest attribute that contains a Map with path variables. |
static String |
RESPONSE_STATUS_ATTRIBUTE
Name of the
HttpServletRequest attribute that contains the response status code. |
static String |
SELECTED_CONTENT_TYPE
The
MediaType selected during content negotiation,
which may be more specific than the one the View is configured with. |
Modifier and Type | Method and Description |
---|---|
default String |
getContentType()
Return the content type of the view, if predetermined.
|
void |
render(Map<String,?> model,
HttpServletRequest request,
HttpServletResponse response)
Render the view given the specified model.
|
static final String RESPONSE_STATUS_ATTRIBUTE
HttpServletRequest
attribute that contains the response status code.
Note: This attribute is not required to be supported by all View implementations.
static final String PATH_VARIABLES
HttpServletRequest
attribute that contains a Map with path variables.
The map consists of String-based URI template variable names as keys and their corresponding
Object-based values -- extracted from segments of the URL and type converted.
Note: This attribute is not required to be supported by all View implementations.
@Nullable default String getContentType()
Can be used to check the view's content type upfront, i.e. before an actual rendering attempt.
null
if not predeterminedvoid render(@Nullable Map<String,?> model, HttpServletRequest request, HttpServletResponse response) throws Exception
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.
model
- Map with name Strings as keys and corresponding model
objects as values (Map can also be null
in case of empty model)request
- current HTTP requestresponse
- HTTP response we are buildingException
- if rendering failed