JSR286 Portlet开发:Portlet之间的Events通信

本文介绍如何在JDeveloper11.1.1.7中创建JSR286标准Portlet,并实现Portlet间的事件交互,包括创建Portlet应用与工程、添加事件及编写触发代码等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发工具:Jdeveloper 11.1.1.7

1.创建Portlet Application

a.选择File->New,在新建向导中选择WebCenter Portal - Portlet Producer Application,如下图:

b.在向导中输入Application Name,如下图所示:

c.其他配置默认即可,点击【Finish】完成。


2.创建Portlet工程

a.在Portlets上点击右键,选择New

b.在向导中左侧Categories中展开Web Tier 选择Portlets,在右侧窗口选择“Standards-based Java Portlet (JSR 286)”,点击【OK】


c.在如下向导视图中,输入相关信息,点击下一步【Next】(这里使用默认设置Portlet1):

d.在如下向导视图中,本例使用默认配置(也可根据实际情况输入相关信息),直接点击【Finish】:

e.至此,一个简单的JSR 286 Portlet创建完成。

f.参照以上步骤再创建一个Portlet,本例为Portlet2,创建完成后,应用导航视图如下:

3.为Portlet 添加事件

a.双击打开portlet配置文件portlet.xml,选择Events。

b.点击“添加”图标,添加事件,选择Qualified Name,输入命名空间Namespace,(此处为:http://xmlns.hirisun.com/portlet/EventSample);在Name字段输入事件名称(此处为:myEvent);Payload Type字段此处选择或输入java.lang.Integer;如下图所示:

c.以上步骤添加完成后,选择左侧Portlets,再选择portlet1,随后选择右侧Events选项卡,如下图所示:

d.在Publishing Events列表中选择myEvent事件,添加至选择(Selected)列表,如下图所示:

(注:简要说明Publishing Events及Processing Events,Publishing Events为事件的发起者,Processing Events为事件处理者,简单描述为,实现Publishing Events的portlet触发myEvent事件后,实现Processing Events的portlet将接收事件进行处理。

e.参照以上步骤,再选择portlet2,随后选择右侧Events选项卡,在Processing Events中添加myEvent到选中列表,如下图所示:


4.编写事件触发代码

a.打开Web Content/portlet1/html/view.jsp,如下图所示:

b.在View.jsp页面中添加如下代码:

<form action="<portlet:actionURL/>" method="POST">
<input class="portlet-form-button" type="submit" name="testEvent" value="事件测试">
</form>

c.双击打开Portlet1.java,如下图:

d.在processAction方法中添加如下代码:

        String testEventAction = request.getParameter("testEvent");
        
        if (testEventAction != null){
            //调用事件
            response.setEvent(new QName("http://xmlns.hirisun.com/portlet/EventSample", "myEvent"),1);
            
            response.setPortletMode(PortletMode.VIEW);
            response.setWindowState(WindowState.NORMAL);
        }

e.打开Portlet2.java,在此类中重载processEvent函数,添加代码如下:

    @Override
    public void processEvent(EventRequest eventRequest, EventResponse eventResponse) throws PortletException,
                                                                                            IOException {
        //super.processEvent(eventRequest, eventResponse);
        Event event = eventRequest.getEvent();
        if (event.getName().equals("myEvent"))
        {
            System.out.println("myEvent in portlet2 is called!");
            System.out.println("myEvent value:"+event.getValue());
            
            eventResponse.setRenderParameter("TEST_P", "调用了事件");
        }
    
    }

f.打开Web Content/portlet2/html/view.jsp,修改代码如下:

<%@ page contentType = "text/html; charset=UTF-8"
         pageEncoding = "UTF-8"
         import = "javax.portlet.*, java.util.*, com.hirisun.portlet.Portlet2, com.hirisun.portlet.resource.Portlet2Bundle"%>
<%@ taglib uri = "http://java.sun.com/portlet_2_0" prefix="portlet"%>

<portlet:defineObjects/>
<%
   String testP = renderRequest.getParameter("TEST_P");

%>

<p class="portlet-font">Welcome, this is the ${renderRequest.portletMode} mode.</p>

<%
    if(testP!=null){
%>
        <div style="font-size:16px;color:red;font-weight:bold;"><%=testP%></div>
<%
    }
%>

g.此致,保存整个项目,运行测试(可创建WebCenter Portal - Framework Application测试)。


5.运行测试

a.在集成服务器中运行Portlets项目,右键点击portlet.xml,选择Run,如下图:

运行成功后,如下图:

点击WSRP V2 WSDL,复制该链接到portal中进行注册使用。

b.运行portlal项目,复制以上portlet WSDL地址进行注册,如下图:

c.在页面中分别添加Portlet1与Portlet2,如下图:

d.访问测试:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值