16.3. ViewRendererServlet

Portlet MVC中的显示过程比Web MVC的复杂一点,为了复用所有Spring Web MVC里 的视图技术,必须把 PortletRequest / PortletResponse 转换到 HttpServletRequest / HttpServletResponse,然后调用 Viewrender方法。为此,DispatcherPortlet 使用了一个特殊的servlet:ViewRendererServlet

为了DispatcherPortlet能够显示, 必须在web.xml文件里为你的web应用声明一个 ViewRendererServlet的实例,如下:

<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>

在实际执行显示时,DispatcherPortlet这样做:

  1. WebApplicationContext作为属性绑定在请求上, 使用和DispatcherServlet相同的 WEB_APPLICATION_CONTEXT_ATTRIBUTEkey。

  2. ModelView对象绑定在请求上,使它们对 ViewRendererServlet可见。

  3. 构造 PortletRequestDispatcher对象,利用 映射到ViewRendererServlet/WEB- INF/servlet/viewURL来执行include操作。

然后,ViewRendererServlet能够以合适的参数 调用Viewrender方法。

可以通过DispatcherPortletviewRendererUrl 配置参数来修改ViewRendererServlet的实际URL。