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_ATTRIBUTE
key。
把Model
和
View
对象绑定在请求上,使它们对
ViewRendererServlet
可见。
构造
PortletRequestDispatcher
对象,利用
映射到ViewRendererServlet
的/WEB-
INF/servlet/view
URL来执行include
操作。
然后,ViewRendererServlet
能够以合适的参数
调用View
的render
方法。
可以通过DispatcherPortlet
的viewRendererUrl
配置参数来修改ViewRendererServlet
的实际URL。