本文通过详细的步骤介绍了 JSR 168 Portlet 通信的场景以及实现它们之间通信的过程。
在 Portal 的开发过程中,Theme 与 portlet 之间的通信,以及 portlet 之间的通信是开发人员常常遇到的问题。通常 Portlet 之间需要能够互相通信,即一个 portlet 的状态发生改变,要通知其他的 portlet,这些收到通知的 Portlet 状态也要做相应的改变。根据 JSR 168 规范,Portlet 由容器管理,它们之间是相互独立的,并不共享 Session 对象。那么如何在 Portlet 之间传递参数呢?在本文中,将根据不同应用场景介绍参数传递的方式。
IBM Rational Application Developer V7.0 和 IBM Rational Software Architect V7.0 是 IBM Rational 软件交付平台产品系列中的第一款产品,它们包含了对 IBM WebSphere Portal V6.0 开发的完整支持。在下面的实例中,我们以 IBM Rational Software Architect V7.0 为开发平台,对 Portlet 的参数传递进行介绍。
首先,我们先介绍一些 portal 的基本概念。
Portal 是一个基于 web 的应用程序,它主要提供个性化、单点登录、不同来源的内容整合以及存放信息系统的表示层。
Portlet 是基于 java 技术的 web 组件,它由 portlet 容器管理、并处理请求,并动态生成输出内容。就像 servlets 是专为将合成页面里的内容聚集在一起而设计的。通常请求一个 portal 页面会引发多个 portlets 被调用。每个 portlet 都会生成标记段,并与别的 portlets 生成的标记段组合在一起嵌入到 portal 页面的标记内。
为规范 Portal,SUN 于 2003 年底制定了 JSR168,它定义了 portlet 标准,并给出了一个实现接口。
每个 portlet 页面由一个或多个 portlet 窗口组成,每个 portlet 窗口又分为两部分:一个是主题外观(Theme),它决定了 portlet 窗口的标题条、控制和边界的样式;另一个是 portlet 段,它由 portlet 应用填充。
对放在同一个页面上的 Portlet.,如果其中的某个 Portlet 做了提交等操作导致 portal 刷新, 这个页面内的每一个 portlet 都会被 render。要实现参数的传递通常有 3 个步骤:定义源 portlet,定义目标 portlet,关联源 portlet 和目标 portlet。
首先我们先建立一个Portlet Project,点击Next;
在Project name中输入MyProjectproj,Target Runtime选择Websphere Portal v6.0,在Portlet API中选择JSR 168 Portlet,选中Create a Portlet,在Project Name中输入SenderPortlet,在Portlet Type中选择Basic Portlet,选择Show Advanced Settings,点击Next;
在Project Facets面板中,选中Java,在version中选择1.4,其他项保持不变,点击Next;
在Portlet Settings对话框中修改Package Prefx为com.ibm.myportlet,其他选项保持默认,点击Finish。
至此,我们已经创建了一个新的 Portlet 项目,其中包含一个名称为 SenderPortlet 的 Portlet。
在Project中点击右键,点击New->Portlet,弹出 Portlet 创建向导对话框;
在Project中选择MyPortletproj,在Project name中输入ReceiverPortlet,Portlet中选择Baisc Portlet,点击Next;
在Portlet Settings对话框中修改Package Prefx为com.ibm.myportlet,其他选项保持默认,点击Finish。
这样我们就创建了ReceiverPortlet,并把它加入到了MyPortletproj项目中。
在SenderPortlet上点击右键,点击Coorperative->EnablethisProtlettoSendData(Source) …
在Coorperative对话框中,在输入框DataTypeURI中输入http://myportletproj#MyDataType,在Java Type中输入java.lang.String,点击Next;
在Property Caption中保留默认值outputProperty Property,在Action Caption中保留默认值SourceAction Action,点击Next;
点击Finish。
SenderPortlet中processAction代码片断。我们在上面定义了发送的参数名称为outputProperty
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-619695/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14789789/viewspace-619695/