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());
}
分享到:
相关推荐
基于Portal和Portlet技术的Web整合应用研究与实现基于Portal和Portlet技术的Web整合应用研究与实现基于Portal和Portlet技术的Web整合应用研究与实现基于Portal和Portlet技术的Web整合应用研究与实现
基于JETSPEED的多portlet流程协作机制研究与实现
基于jetspeed的portlet开发探讨,供大家学习参考!!!!
实现portlet之间通信,包括IBM portal6/6.1
基本JQUERY UI的一个portlet实现,采用MVC设计方式,实现拖动,布局,智能添加等功能,其部分源码用了兔子的jquery ui portlet.
基于JSR168的portlet精彩范例
在 Portal 的开发过程中,Theme 与 portlet 之间的通信,以及 portlet 之间的通信是开发人员常常遇到的问题。通常 Portlet 之间需要能够互相通信,即一个 portlet 的状态发生改变,要通知其他的 portlet,这些收到...
jboss portlet实现文件上传小项目
1. portlet的类结构 2. portlet的过滤器,拦截器
Portlet标准汉化手册
这是本人学习Portlet的一些心得,绝对原创,童叟无欺。
portlet-api.jar portlet-api.jar portlet-api.jar
简单的portlet实例,基于pluto
文件上载Portlet源代码,实现portlet文件上传功能
基于Java Portlet规范的汽车试验数据重用研究.pdf
Spring 3.0 mvc portlet demo 很好的portlet学习示例。集合了portlet Spring3.0 注释配置bean等
portlet-api-1.0.jar,portlet的API,portlet.jar文件
使用eclipse开发基于jsr168标准的portlet项目
介绍基于JSR168规范的workflow portlet的完整实例
发起这个开源项目的原因是因为现有的Portlet插件都太难用,而且和我们现有的系统样式风格不兼容,因为公司的项目前端都是基于jQuery以及jQuery UI 框架开发的,所以为了更好的保持风格统一才有了jQuery UI Portlet。...