跳到导航
BEA Dev2Dev Oracle and BEA
首页 资源中心 dev2dev学堂 在线技术论坛 User Group CodeShare
dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
本地处理针对WSRP PORTLET的事件

时间:2006-08-17
作者:Gerald Nunn
浏览次数:
本文关键字:proxy portletevent handlerinheritlocally代理portlet事件处理程序继承
文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章

    就消费者一方而言,WSRP portlet指代理portlet,因为它只代理来自生产者的内容。在为消费者创建一个新的代理portlet时,它会自动继承来自生产者portlet的事件处理程序。打开代理portlet的事件对话框,其中会显示这些继承的事件,不过您还会注意到,对话框中没有事件编辑按钮。这可以防止您编辑远程事件,是一件好事,但也会阻止您添加自己的事件,我认为这是一件坏事。不能将事件处理程序或动作添加到代理portlet中有些令人讨厌,因为您偶尔可能想将某一动作或处理程序添加到最初的生产者可能没有考虑到的代理portlet中。例如,当特殊事件发生时,您可能想让代理portlet激活它的页面。

    幸运的是,虽然该对话框不允许您添加事件处理程序,但通过手工编辑代理portlet的XML文件很容易做到这一点。如果查看拥有事件的代理portlet的XML文件,您应该会看到如下所示的事件处理片段:

<netuix:handleEvent event="testEvent" eventLabel="handleCustomEvent1" filterable="true"
 fromSelfInstanceOnly="false" onlyIfDisplayed="false" sourceDefinitionWildcard="any">
    <netuix:dispatchToRemotePortlet/>
</netuix:handleEvent>

  这里的关键是netuix:dispatchToRemotePortlet标记,它告诉Portal将事件传播给生产者。要在本地处理事件,只需创建一个全新的netuix:handleEvent block,并将它挂在代理portlet文件中的初始代码块之后。例如:

<netuix:handleEvent event="testEvent" eventLabel="handleCustomEvent1" filterable="true"
 fromSelfInstanceOnly="false" onlyIfDisplayed="false" sourceDefinitionWildcard="any">
    <netuix:dispatchToRemotePortlet/>
</netuix:handleEvent>
<netuix:handleEvent event="testEvent" eventLabel="handleCustomEvent2" filterable="true"
 fromSelfInstanceOnly="false" onlyIfDisplayed="false" sourceDefinitionWildcard="any">
    <netuix:activatePage/>
</netuix:handleEvent>

  这将导致事件被本地和远程处理,支持您管理代理portlet中的事件,这些事件是特定于消费者的,并且不需要传播给生产者门户。顺便提一句,如果通过剪切和粘贴远程事件处理程序来制造一个本地事件处理程序,那么请确保eventLabel被更改成唯一标签。
如果您不确定为特定事件或动作粘贴哪个XML文件,那么可以创建一个临时本地portlet,并在对话框中相应地编辑它。一旦创建了自己的事件和动作,就可以将临时portlet作为XML文件打开,并将事件代码复制和粘贴到代理portlet中。

原文出处:http://dev2dev.bea.com/blog/gnunn/archive/2006/07/handling_events_1.html

dot dot dot

dot
  作者其它文章
您对本文的评价
您对这篇文章的看法如何?
太棒了!5分 不错啊 4分 一般般 3分 有待提高 2分 不好 1分