portlet间通信包括 : 本地portlet与本地portlet通信
远程portlet与远程portlet通信
本地portlet与远程portlet通信
JSR286规范中定义了本地portlet之间的通信,共享session ,共享资源、事件机制
通过event进行portlet之间通信:
1. 定义publishing event的portlet,定义event-definition ,及supported-publishing-event
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
<portlet>
<portlet-name>foodaoportlet</portlet-name>
<display-name>FooDaoPortlet</display-name>
<portlet-class>com.liferay.wyy.dao.DAOPortlet</portlet-class>
<init-param>
<name>view-template</name>
<value>/view/view.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<portlet-info>
<title>FooDaoPortlet</title>
<short-title>FooDaoPortlet</short-title>
<keywords></keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
<supported-processing-event>
<qname xmlns:x="http://wangyy.example.com/food">x:foodItem</qname>
</supported-processing-event>
<!-- 定义支持发布的event -->
<supported-publishing-event>
<qname xmlns:x="http://wangyy.example.com/food">x:foodItem</qname>
</supported-publishing-event>
</portlet>
<!-- 支持event定义 -->
<event-definition xmlns:x="http://wangyy.example.com/food">
<qname>x:foodItem</qname>
<value-type>com.liferay.wyy.dao.model.FoodItem</value-type>
</event-definition>
</portlet-app>
2.定义处理event的portlet, 定义supported-processing-event 及event-definition
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
<portlet>
<portlet-name>eventprocessportlet</portlet-name>
<display-name>EventProcessPortlet</display-name>
<portlet-class>
com.liferay.wyy.event.portlet.EventProcessPortlet
</portlet-class>
<init-param>
<name>view-template</name>
<value>/view/view.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<portlet-info>
<title>EventProcessPortlet</title>
<short-title>EventProcessPortlet</short-title>
<keywords></keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
<!-- 定义支持处理的event 需要放在publishing-event之前-->
<supported-processing-event>
<qname xmlns:x="http://wangyy.example.com/food">x:foodItem</qname>
</supported-processing-event>
</portlet>
</portlet-app>
3. 发布event的portlet中处理:
在processAction中添加setEvent代码
//setEvent
QName qName = new QName("http://wangyy.example.com/food", "foodItem");
res.setEvent(qName, foodItem);
4.处理event的portlet中代码
/**
* 处理event事件
* @param request
* @param response
* @throws PortletException
* @throws IOException
*/
@ProcessEvent(qname = "{http://wangyy.example.com/food}foodItem")
public void processFoodItemEvent(EventRequest request, EventResponse response)
throws PortletException, IOException{
Event event = request.getEvent();
FoodItem foodItem = (FoodItem)event.getValue();
System.out.println("Processing event in EventProcessPortlet id=" + foodItem.getId() + ", name=" + foodItem.getName());
response.setRenderParameter("foodItemName", foodItem.getName());
}
分享到:
相关推荐
`jQuery Portlet` 是基于 jQuery UI 框架实现的一种portlet组件,它主要用于构建可自定义布局、具有拖放功能的Web应用程序界面。Portlet是Web应用中的一个模块化组件,常用于企业级门户系统,让用户能够根据个人需求...
### 最新最全的Portlet通信过程详解 #### 概念介绍 - **Portal的定义**:Portal是一种基于Web的应用程序,它提供了个性化服务、单点登录能力、内容整合功能,以及作为信息系统的前端界面。它能根据用户的需求提供...
很多portlet实现基于Model-View-Controller(MVC)设计模式,其中模型处理业务逻辑,视图负责渲染,控制器处理用户输入。 13. **portlet与Web服务**: Portlet可以调用Web服务来获取远程数据,或者提供Web服务供...
本文将深入探讨"Liferay IPC(Inter-Portlet Communication)portlet间通信DEMO",并基于提供的`portlet.xml`文件来解析相关的配置信息。 1. **Liferay IPC简介** Liferay IPC机制使得不同的portlet能够共享数据和...
JSR286还引入了Portlet事件服务,允许Portlet之间以及Portlet与门户框架之间通过事件机制进行通信。这增强了Portlet应用的交互性和动态性。 #### 15. JSR286新增了共享呈现参数 JSR286规定了共享呈现参数的概念,...
8. **portlet间通信(IPC, Inter-portlet Communication)**:JSR286规范引入了portlet间通信机制,如`PortletSession`对象的`setAttribute()`方法,使得portlet能够共享信息。 9. **安全性和权限**:Portlet 2.0 ...
2. **事件机制(Event Mechanism)**:Liferay提供了一种基于发布/订阅模型的事件系统,使得一个组件能够广播事件,其他组件可以监听并响应这些事件。`test-portlet`可以通过发布事件来通知其他组件某些状态的改变,...
- 提供的文件“portlet-1_0-pfd-spec.pdf”很可能是一个关于Portlet 1.0规范的文档,该规范定义了portlet开发的标准,包括portlet生命周期、渲染、事件处理、通信等。 - “portlet-1_0-pfd-spec-api.zip”可能包含...
该规范在Portlet 1.0的基础上进行了大幅度的改进和完善,不仅增强了Portlet的功能性和互操作性,还引入了重要的特性——Inter-Portlet Communication (IPC),即端口间的通信机制。这对于提高门户应用的灵活性和交互...
它负责管理Portlet的生命周期、安全性和资源,同时也提供了Portlet之间的通信机制。 **三者关系:** - Portal作为整体的框架,为用户提供一个集中的信息和服务入口。 - Portlet作为具体的功能模块,在Portal中提供...
6. **portlet间通信**:通过JSR286,portlet之间可以进行通信,比如通过公共渲染参数(Public Render Parameters)共享数据,或使用Portlet Messaging API进行异步通信。 7. **portlet安全**:portlet开发需要考虑...
在实际应用中,你可能还会遇到权限管理、portlet通信(如JSR-286的Portlet Inter-portlet Communication,PICC)和portlet缓存等问题。这些问题都需要根据具体需求和portlet的特点来解决。记住,理解并熟练掌握...
Portlet框架是为portlet容器(如Liferay、WebSphere Portal)提供的一套标准,它定义了portlet的生命周期、渲染机制以及portlet间通信的规则。portlet是一种独立的、可重用的Web组件,可以嵌入到portlet门户中,提供...
此外,portlet之间的通信,如使用portlet间通信(Inter-portlet Communication, IPC)机制,也是重要的一环,这使得portlet可以共享信息和协同工作。 源码分析对于理解portlet的实现至关重要。通过查看和调试提供的...
- **协作和通信**:通过窗口属性和事件,portlet之间可以实现数据交换和协同操作。 通过JSR 286的Portlet过滤器和Portlet窗口,开发者能够构建更加健壮、灵活和用户友好的portlet应用,提升整体门户系统的功能性和...
- 提供了事件处理机制,方便 Portlet 之间进行通信。 - 定义了 Portlet 的渲染和动作处理方法。 - 支持国际化和多语言。 #### 五、Portlet 的渲染与交互 - **渲染**:是指将 Portlet 的内容呈现给用户的过程。...
API提供了portlet生命周期管理、渲染、事件处理以及与其他portlet通信的接口和类。 2. **Jetspeed Portal**: Jetspeed是基于Java的开源门户平台,它实现了JSR-168(Portlet API 1.0)和JSR-286(Portlet API 2.0)...