The rendering process in Portlet MVC is a bit more complex than in
Web MVC. In order to reuse all the view technologies
from Spring Web MVC), we must convert the
PortletRequest /
PortletResponse to
HttpServletRequest /
HttpServletResponse and then call the
render method of the
View. To do this,
DispatcherPortlet uses a special servlet that
exists for just this purpose: the
ViewRendererServlet.
In order for DispatcherPortlet rendering to
work, you must declare an instance of the
ViewRendererServlet in the
web.xml file for your web application as
follows:
<servlet> <servlet-name>ViewRendererServlet</servlet-name> <servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ViewRendererServlet</servlet-name> <url-pattern>/WEB-INF/servlet/view</url-pattern> </servlet-mapping>
To perform the actual rendering, DispatcherPortlet
does the following:
Binds the
WebApplicationContext to the request
as an attribute under the same
WEB_APPLICATION_CONTEXT_ATTRIBUTE key that
DispatcherServlet uses.
Binds the Model and
View objects to the request to make
them available to the
ViewRendererServlet.
Constructs a
PortletRequestDispatcher and performs
an include using the /WEB-
INF/servlet/view URL that is mapped to the
ViewRendererServlet.
The ViewRendererServlet is then able to
call the render method on the
View with the appropriate
arguments.
The actual URL for the ViewRendererServlet
can be changed using DispatcherPortlet’s
viewRendererUrl configuration parameter.