portlet2.0 的通信特性
JSR268中定义了portlet之间的通信协议
基本的原理就是事件监听机制,portlet A 触发事件。portlet B对时间进行监听并作出反应。传递的数据放在 事件的 payload 里面。并且事件通信的两个portlet可以不再同一个page,需要修改portlet.event.distribution=layout。 具体参见liferay in action 里 ipc 那一章。
下面展示通过liferay in action 的一个例子。
pitchPortlet view.jsp 上有一个 按钮。通过该按钮 该portlet发送一个事件。
catcherPorlet 写好时间监听函数。
step 1. 创建 pitchPortlet.(使用liferay官方下载的eclipse,已经集成好liferay)
a. 修改portlet.xml
<event-definition>
<qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>
<value-type>java.lang.String</value-type>
</event-definition>
声明 portlet 事件。
b. 定义事件发生者(在pitchPortlet 的xml定义)
<supported-publishing-event>
<qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>
</supported-publishing-event>
c. 定义事件处理者 (在 catchPortlet 的xml定义)
<supported-processing-event>
<qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>
</supported-processing-event>
d.完整的xml定义:见附件
e.完成 PitcherPortlet
@ProcessAction(name="pitchBall")
public void pitchBall(ActionRequest actionRequest, ActionResponse actionResponse)throws IOException, PortletException {
//其他逻辑
//qname 与事件定义时一直
QName qName = new QName ("http://liferay.com/events", "ipc.pitch");
actionResponse.setEvent(qName, pitchType);
}
f.完成catchPortlet
@ProcessEvent(qname="{http://liferay.com/events}ipc.pitch")
public void catchBall(EventRequest request, EventResponse response) {
Event event = request.getEvent();
String pitch = (String)event.getValue();
response.setRenderParameter("pitch", pitch);
}
g. pitchPortlet /view.jsp
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<p>Click the link below to pitch the ball. </p>
<portlet:actionURL var="pitch" name="pitchBall"></portlet:actionURL>
<a href="<%=pitch%>">Pitch!</a>
h. catchPortlet /view.jsp
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<%
String pitch = (String)renderRequest.getParameter("pitch");
%>
<p>And the pitch is....</p>
<p>
<% if (pitch!=null) { %>
<%=pitch %>!
<% } else { %>
... waiting for pitch.
<% } %>
I :部署运行 点击pitch 就可以看到 catchPortlet 的反应
分享到:
相关推荐
Liferay作为一个开源的企业级门户平台,提供了多种方式来实现组件间的通信,以支持复杂的应用场景。本实例将深入探讨如何在Liferay中进行跨组件通信,并以`test-portlet`为例进行详细讲解。 首先,我们需要理解...
【标题】:“Liferay Portlet Demo” 在Liferay Portal中,Portlets是可重用的Web组件,它们为用户提供交互式功能。"Liferay Portlet Demo"是一个示例项目,旨在展示如何在Liferay环境中开发、部署和使用portlet。...
【Liferay Struts2 Demo开发详解】 在Liferay门户平台中,开发基于Struts2的portlet是实现动态网页和交互功能的重要方式。以下是一个详细的步骤指南,涵盖了从项目准备到portlet创建的所有关键环节。 ### 一、准备...
liferay hook 开发demo,swf格式
【标题】"liferay+struts2 demo" 涉及到的是两个核心的技术:Liferay门户框架和Struts2 MVC框架的集成应用。Liferay是一个开源的企业级门户平台,常用于构建企业内部或外部的协作和信息共享系统。而Struts2是一个...
《Liferay Struts2 Demo详解》 在Java Web开发领域,Liferay Portal和Struts2框架的结合使用,为构建企业级应用提供了强大的支持。"Liferay Struts2 Demo"是一个典型的示例,展示了这两者如何协同工作,以实现高效...
通过分析“Liferay开发持久化层和服务层演示Demo代码”这一主题,我们将理解Liferay Service Builder如何帮助开发者高效地管理数据库操作,并创建自定义服务。 首先,Liferay是一个开放源代码的企业级门户平台,它...
liferay hook 开发demo 2,swf格式
使用liferay框开发ajax 的Demo
例如portlet生命周期、portlet渲染机制、portlet间通信(JSR-286的ResourceRequest和ResourceResponse)、portlet的缓存策略、portlet的国际化处理、portlet的安全性设置,以及如何使用Liferay的工作流API等。...
这个“liferay-demo”项目是一个Liferay的示例应用,旨在帮助开发者快速理解并掌握Liferay的开发流程和关键概念。 1. **Liferay 平台概述** Liferay 提供了一个基于Java的全功能Web门户框架,支持多种服务如内容...
在Liferay中整合GWT(Google Web Toolkit)是一项常见的任务,尤其对于开发复杂的企业级Web应用来说,这种集成可以利用GWT的强大力量来创建高性能的用户界面,同时利用Liferay的门户功能和社区特性。这篇博文提供了...
Liferay Portal Liferay IDE
"liferay-demo-modules" 是一组示例模块,专为展示 Liferay 的功能和开发实践而设计。这些模块是用 Java 编写的,遵循 OSGi(Open Service Gateway Initiative)规范,使得它们可以方便地在 Liferay 平台上进行动态...
2. **portlet开发**:学习如何使用Java和Maven创建portlet,以及如何处理portlet间通信。 3. **主题定制**:掌握CSS、HTML和FreeMarker模板语言,为Liferay创建独特的外观。 4. **服务构建**:了解Liferay的服务...
Liferay是一款开源的企业级门户平台,它提供了丰富的功能和高度可定制性,广泛应用于构建企业网站、内部系统、协作平台等。在这个“liferay详细讲解 liferay项目完全讲解”的资料包中,我们可以期待深入了解到关于...
标题 "Liferay扩展环境 Liferay Ext" 涉及到的是Liferay门户平台的一个关键概念,Liferay Ext是用于扩展和定制Liferay功能的核心工具。Liferay是一个开源的企业级内容管理平台,它允许用户根据需求构建自定义的数字...
Liferay还支持portlet间的通信,例如通过JSR-286的ResourceRequest和ResourceResponse实现。 Liferay的安全性是另一个重要的主题。它内置了角色和权限系统,允许管理员为不同用户和组分配不同的访问权限。此外,...
### Liferay环境搭建详解 #### 一、简介 Liferay是一款功能强大的开源企业级门户平台,主要用于构建企业级Web应用程序和服务。本文档旨在详细介绍如何利用Eclipse集成开发环境(IDE)来搭建Liferay开发环境,并...