Portlet MVC中的显示过程比Web MVC的复杂一点,为了复用所有Spring Web MVC里
的视图技术,必须把
PortletRequest /
PortletResponse 转换到
HttpServletRequest /
HttpServletResponse,然后调用
View的
render方法。为此,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这样做:
把
WebApplicationContext作为属性绑定在请求上,
使用和DispatcherServlet相同的
WEB_APPLICATION_CONTEXT_ATTRIBUTEkey。
把Model和
View对象绑定在请求上,使它们对
ViewRendererServlet可见。
构造
PortletRequestDispatcher对象,利用
映射到ViewRendererServlet的/WEB-
INF/servlet/viewURL来执行include操作。
然后,ViewRendererServlet能够以合适的参数
调用View的render方法。
可以通过DispatcherPortlet的viewRendererUrl
配置参数来修改ViewRendererServlet的实际URL。