论坛首页 Java企业应用论坛

再谈WebWork和Portal的集成(欢迎熟悉portal的朋友进来讨论)

浏览 3678 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-01-11  
gigix发了一篇“WebWork Portlet ”http://forum.iteye.com/viewtopic.php?t=8750
gigix 写道
准确说应该是xWork Porlet。所有的Java代码和xWork相关的配置文件见附件。


本篇主要是对WebWork和portal的无缝集成进行讨论。

集成目标:
[list]直接将已有的WebWork应用无缝集成到Portal中[/list:u]
[list]快速高效的开发portlet应用[/list:u]

集成方案
1、 统一提供一个WebWorkDispatcherPortlet,作为所有使用WebWork开发的portlet派遣器。这样,不必为每个portlet都开发一个继承javax.portlet.GenericPortlet的子类。其实WebWorkDispatcherPortlet和ServletDispatcher很类似的。

2、 Portlet的render()和processAction()方法都分别对应一个WebWork的Action。一般情况,render的具体实现doView,doEdit都分别对应一个Action,可以分别在portlet.xml文件种定义。如果是执行processAction()它就会分别执行2个Action。
portlet.xml文件配置例子如下:
<portlet>
		<portlet-name>MyHelloWorldPortlet</portlet-name>
		<portlet-class>com.opensymphony.webwork.portlet.WebWorkDispatchPortlet</portlet-class>
		
		<init-param>
			<name>view_action</name>
			<value>/MyPortlet/view.action</value>
		</init-param>
		<init-param>
			<name>edit_action</name>
			<value>/MyPortlet/edit.action</value>
		</init-param>
		
		<expiration-cache>0</expiration-cache>
		<supports>
			<mime-type>text/html</mime-type>
			<portlet-mode>VIEW</portlet-mode>
			<portlet-mode>EDIT</portlet-mode>
		</supports>
		<portlet-info>
			<title>Hello World Portlet</title>
			<keywords>Hello, world, test</keywords>
		</portlet-info>
		<portlet-preferences>
			<preference>
			<name>GreetText</name>
			<value>Hello WebWork World.</value>
		</preference>
		</portlet-preferences>
	</portlet>

3、 实现二种WebWork Result。
PortalActionResult:用于processAction()方法执行的Action,它只是保存Result的一些信息(例如:转发页面的url),并不真正转发到相应的视图。
PortalRenderResult:用于render()方法执行的Action。它首先查找是否有PortalActionResult保存的result信息,如果有则使用它,如果没有找到则使用自己的Result信息;然后它将调用PortletRequestDispatcher的include()方法,呈现最终视图。

4、 由PortalActionContext(类似WebWorkActionContext)提供直接对Portal相关的API访问。例如:PortletRequest,PortletContext,PortletSession(注意:PortletSession有两个不同的范围:APPLICATION_SCOPE 和PORTLET_SCOPE)等。另一种可选方法是提供一系列Portlet*Aware接口,访问Portal的这些API。

5、 提供一个PortletRequestParameterInterceptor,自动将PortletRequest的parameter设置到Action的属性中。功能类似于Xwork的ParametersInterceptor。一种可选择的方法是在WebWorkDispatcherPortlet中直接将parameter设为PortletRequest的parameter。

6、 提供一个PortletURL标签库。 在调用处理动作(process action)时,将设置二个paramter:"WWAction","WWNameSpace",用来表示该处理动作对应的WebWork  Action。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics