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。