Liferay中的Portlet事件通信在有的项目开发中是需要实现的一种机制。
下面转自http://liferaycms.blogspot.com/2011/07/inter-portlet-communication.html
Inter portlet communication
Here is the flow of IPC
Here below are the steps to follow for IPC :
Sender portlet
To configure a portlet to be available to send events, add the following to your portlet.xml:
First, you have to define the event to send.
To do this, you need to specify a namespace and a name for your event.
This definition is the event definition that has to go into the portlet.xml of the sender AND of all receivers.
In our case it defines, that an event called "message" for the namespace http:your.private.namespace.com/yourEvent exists which is a String
<event-definition>
<qname xmlns:t="http:your.private.namespace.com/yourEvent">t:message</qname>
<value-type>java.lang.String</value-type>
</event-definition>
<qname xmlns:t="http:your.private.namespace.com/yourEvent">t:message</qname>
<value-type>java.lang.String</value-type>
</event-definition>
To choose your portlet as a sending portlet additionally add the following:
<supported-publishing-event>
<qname xmlns:u="http:your.private.namespace.com/yourEvent">t:message</qname>
</supported-publishing-event>
<qname xmlns:u="http:your.private.namespace.com/yourEvent">t:message</qname>
</supported-publishing-event>
This selects your portlet as a sending portlet for the chosen event.
This is all for the configuration of the sender portlet.
Now let´s write code to send an event in sender class.
public void sendEvent(ActionRequest actionRequest,ActionResponse actionResponse) {
QName qname = new QName(“http:your.private.namespace.com/yourEvent","message");
actionResponse.setEvent(qname,"Hello World");
return;
}
QName qname = new QName(“http:your.private.namespace.com/yourEvent","message");
actionResponse.setEvent(qname,"Hello World");
return;
}
Receiver portlet
First add the event definition to the portlet.xml of your receiving portlet.
<event-definition>
<qname xmlns:t="http:your.private.namespace.com/yourEvent">t:message</qname>
<value-type>java.lang.String</value-type>
</event-definition>
<qname xmlns:t="http:your.private.namespace.com/yourEvent">t:message</qname>
<value-type>java.lang.String</value-type>
</event-definition>
Second, add tis code to process an event
<supported-processing-event>
<qname xmlns:u="http:your.private.namespace.com/yourEvent">t:message</qname>
</supported-processing-event>
<qname xmlns:u="http:your.private.namespace.com/yourEvent">t:message</qname>
</supported-processing-event>
Now, just write code to your receiving portlet class,
@Override
public void processEvent(EventRequest request, EventResponse response)
public void processEvent(EventRequest request, EventResponse response)
{
Event event = request.getEvent();
if (event.getName().equals("message"))
Event event = request.getEvent();
if (event.getName().equals("message"))
{
String message = (String) event.getValue();
}
}
String message = (String) event.getValue();
}
}
相关推荐
总结来说,Liferay的Portlet通信和数据传递是一个涉及多个层面的问题,需要根据具体业务场景灵活运用各种机制。通过理解PortletSession、Public Render Parameters、Portlet事件以及Portlet URL调用的工作原理,...
Portlet是Liferay Portal中的核心组件,类似于Web应用的迷你窗口,可以嵌入到门户页面上展示内容和服务。Portlets可以是动态的,比如显示实时数据,也可以是静态的,如导航菜单或登录表单。它们通过portlet API与...
本实例将深入探讨如何在Liferay中进行跨组件通信,并以`test-portlet`为例进行详细讲解。 首先,我们需要理解Liferay中的组件概念。在Liferay中,组件通常指的是portlet、service、布局模板、主题等可重用的代码...
- **Portlet间通信**:通过JSR-286的`PortletSession`或Liferay的`Event`机制,实现不同Portlet间的协作。 - **RESTful服务**:创建Portlet API,以JSON或其他格式暴露数据,供其他应用或Portlets调用。 总之,理解...
最后,书中可能还会包含一些高级话题,如Portlet的缓存策略、portlet间通信的高级技巧、portlet的性能优化以及如何发布和部署Portlet到Liferay Portal Server。 总之,《Liferay Portlet开发参考手册》是一本全面且...
在Liferay Portal环境中,portlet是构建用户界面的基本模块,它提供了与用户交互的功能。"Liferay Portlet 站内消息组件"是一个专门用于在Liferay站点内部实现消息传递功能的portlet。这个组件通常用于增强社交协作...
4. **开发或配置portlet**:在Liferay中创建或安装一个portlet,这个portlet可以与Alfresco通信,展示和处理Alfresco的内容。 5. **工作流集成**:如果需要,可以通过Alfresco的API或者使用预定义的工作流程模板,...
Portlet之间的通信--- Liferay 内部Portlet通信-Liferay中的示例Portlet 示例:从Portlet A输入标题,并使用Portlet B在同一页面上显示标题。
在IT行业中,Liferay Portal是一款广泛使用的开源企业级门户平台,它允许开发人员构建和集成各种Web应用程序,如portlet。Portlets是Liferay Portal中的基本交互单元,它们可以在同一个页面上并排显示,互相交互。...
Liferay的portlet通信机制,如Portlet渲染模式和事件处理,也是开发过程中需要掌握的关键点。 总之,深入研究Liferay Portal涉及到理解Portlet的部署、配置、开发,以及如何在不同环境下适应性部署。掌握这些知识,...
例如portlet生命周期、portlet渲染机制、portlet间通信(JSR-286的ResourceRequest和ResourceResponse)、portlet的缓存策略、portlet的国际化处理、portlet的安全性设置,以及如何使用Liferay的工作流API等。...
1. **Portlet**:Liferay中的基本单元,它是portlet容器内的Web应用程序,可以被部署到门户上,提供独立的功能和交互界面。 2. **Struts2 Action**:Struts2框架中的核心组件,负责接收用户的请求,执行相应的业务...
开发过程中,开发者需要理解Liferay的portlet生命周期,以及如何利用Liferay的服务API来处理数据操作。 总的来说,Liferay入门帮助文档是一个宝贵的资源,它不仅提供了Liferay的基础知识,还详细阐述了如何配置开发...
文档中将详细介绍portlet生命周期、渲染、事件处理以及portlet与portlet之间的通信。 3. **Liferay Portal 配置** Liferay Portal的配置涉及到多个层次,包括服务器级别的配置、portlet部署配置以及应用级别的设置...
在这个“Portlet案例项目”中,我们将深入探讨Portlet开发以及如何在Liferay环境中部署和使用它们。 首先,了解Portlet的基本概念至关重要。Portlet是一种Java Web组件,遵循portlet规范(如JSR 286或JSR 168),它...
5. **配置Liferay**:在Liferay环境中,创建一个新的portlet或者更新现有的portlet来加载GWT应用。在Liferay的`portlet.xml`配置文件中,指定WAR文件的路径,以便Liferay能够正确地部署和加载它。 6. **测试与调试*...
`<liferay-portlet:renderURL>`用于创建portlet渲染URL,而`<liferay-portlet:actionURL>`则用于生成portlet的动作URL,这两个标签在portlet通信中非常关键。 #### 1.2 StrutsPortlet StrutsPortlet标签库为基于...
4. **portlet通信**:portlet之间的通信可以通过多种方式实现,如公共渲染参数(Public Render Parameters)、portlet间通信API(Portlet Inter-Portlet Communication, IPC)或者通过JavaScript。IPC允许portlet...
在这个"Portlet入门实例for Liferay"中,我们将深入探讨Portlet的基本概念、开发流程以及在Liferay中的应用。 1. **Portlet基本概念**: - Portlet是一种轻量级的Web组件,它可以嵌入到门户页面中,提供特定的功能...
书中涵盖了从安装配置到创建自定义portlet、主题和布局的全过程,还讨论了Liferay的安全性和性能优化,帮助读者将Liferay应用于实际项目中。 《Liferay Portal Systems Development》则更侧重于Liferay的系统开发...