在RAD7中开发JSR168 Portlet (四)

原创 2007年09月28日 17:53:00
示例四:JSR 168协作portlet
本实例展现协作portlet的开发方法。
 
(1)创建一个新的名为PortletCooperative的portlet项目
Portlet名称为PortletSource,类型选“基本Portlet”。
内容方式只选择“查看”,因为在这个示例中我们只需使用这一个视图。
下面的配置全部都勾去不选,这个示例中用不到。
 
(2)在项目PortletCooperative中再新建一Portlet名为PortletTarget,设置与PortletSource相同。
 
(3)使用协作源向导激活这个源portlet共享数据。
1. 展开 Portlet部署描述符 节点。
2. 右键点击PortletSource,选择 协作->使此Portlet能够发送数据(源)。
3. 将数据类型URI变更为 http://portletcooperative#msg,Java类型仍是String。
4. “操作参数”不变,将“操作值”更改为 SendMsg。“位置”仍选择“请求属性”,将“属性名”更改为outputMsg。
5. 保留默认设置。
6. 最后会显示一个配置协作源Portlet步骤的文档,对初学者是个很好的参考。
 
(4)使用协作目标向导使目标portlet接收数据。
1. 展开 Portlet部署描述符 节点。
2. 右键点击PortletTarget,选择 协作->使此Portlet能够发送数据(源)。
3. 将数据类型URI变更为 http://portletcooperative#msg,注意名称要和PortletSource中的URI相同。
 
4. “操作参数”不变,将“操作值”更改为 RevMsg。“位置”选择“请求参数”,将“属性名”更改为inputMsg。
 
5. 保留默认设置。
6. 最后照样会显示一个配置协作目标Portlet步骤的文档。
 
配置完成后展开Portlet部署描述符可以看到刚定义的行为和数据类型。
 
(5)添加协作源触发器入PortletSourcePortletView.jsp
1. 在页面中添加一文本框,名为msg。
将Portlet页签中的“协作源触发器”拖放进PortletSourcePortletView设计页,会弹出“插入协作源触发器”向导。“源portlet”选择PortletSource,“操作值”SendMsg,“属性名”outputMsg,“要发送的值”暂时先设为data,下面马上就会修改。“UI控件类型”选择按钮。
 
设计完成页面如下图。
页面代码:
<%@page session="false" contentType="text/html" pageEncoding="GB18030"%>
<%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects/>
 
<form method="POST" action="<portlet:actionURL/>">
<input type="text" name="msg" size="20" value="">
<input name="ACTION_NAME_PARAM" value="SendMsg" type="hidden">
<input name="submit" value="发送" type="submit">
</form>
2. 打开PortletSourcePortlet.java,可以发现RAD已经自动在函数processAction中生成了一段代码,我们稍微做一下改动,让其取msg文本框中的值。
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
if(ACTION_NAME != null && ACTION_NAME.equals(request.getParameter(ACTION_NAME_PARAM))) {
request.setAttribute("outputMsg", request.getParameter("msg"));
}
}
 
(6)对PortletTarget进行修改
1. 修改PortletTargetPortletView.jsp代码
<%@page session="false" contentType="text/html" pageEncoding="GB18030" import="javax.portlet.*" %>
<%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects/>
<%PortletPreferences prefs = renderRequest.getPreferences();%>
<p><%=prefs.getValue("msg", "Hello World") %></p>
2. 修改PortletTargetPortlet.java
这个文件无法自动生成代码,只能手动添加了。
在头部添加两常量定义:
public static final String ACTION_NAME = "RevMsg";
public static final String ACTION_NAME_PARAM = "ACTION_NAME_PARAM";
修改processAction函数,将取得的传入值存入PortletPreferences:
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
if(ACTION_NAME != null && ACTION_NAME.equals(request.getParameter(ACTION_NAME_PARAM))) {
       PortletPreferences prefs = request.getPreferences();
       prefs.setValue("msg",request.getParameter("inputMsg"));
       prefs.store();
}
}
(7)安装测试
开发完成,将Portlet文件导出然后在Portal上安装。
分别建立两个页面SourcePage和TargetPage,然后将两个portlet分别放置在它们上面。在此我们测试跨页面的传值。
1. 进入TargetPage的“编辑页面布局”,在“联结”标签中,点击“管理操作”。
在页面中勾选“RevMsg Action”的“全局”选项,只有在此选择了才可跨页接收。
2. 进入SourcePage的“编辑页面布局”,在“联结”标签中,创建联结。注意,全部设置完成后要点击最后的加号确认添加,如此联结才真正建立。
3. 访问测试。
输入文字后点击“发送”即可发现页面自动跳转到TargetPage,并显示出该文本。
 
学习Faces Portlet的开发方法可以参考IBM网站上的文章《使用 Application Developer V7 来创建和部署 JSR 168 协作 portlet》。读者可以照着该文操作一遍,体验下JSF开发的优点,代码一句都不用写

在RAD7中开发JSR168 Portlet (三)

读者会发现我在示例2中定义的CONFIG_TITLE这个变量始终没有用到,其实是为了实现Portlet标题栏文字的自设定而放置的。WebSphere Portal6中Portlet标题栏文字的修改比较...
  • freewind88
  • freewind88
  • 2007年09月04日 16:46
  • 1495

在RAD7中开发JSR168 Portlet (一)

这段时间比较懒,不想写文章,结果blog也闲置快半年了  本教程介绍Rational Application Developer 7中JSR168 Portlet的开发,以两个例子说明JSR168 P...
  • freewind88
  • freewind88
  • 2007年09月04日 13:29
  • 2035

在RAD7中开发JSR168 Portlet (二)

第二个示例:在Portlet配置页面中添加设置界面,在视图页面中显示用户设定的网页链接,同时可以控制该网页的宽度和高度。在第一个示例项目中添加代码实现本示例。(1)在PortletExamplePor...
  • freewind88
  • freewind88
  • 2007年09月04日 15:17
  • 1286

在RAD7中开发JSR168 Portlet

开发环境:WinXP+SP2,RAD 7.0.0.3测试环境:Win2003+SP2,WebSphere Portal6 示例1:在Portlet编辑页面中添加用户登录界面,在视图页面中显示用户名和密...
  • lukebie
  • lukebie
  • 2007年11月26日 17:38
  • 1734

Struts2 JSR168 Portlet的开发

本教程介绍Struts2 JSR168 Portlet的开发,说明了开发基本内容和步骤,所实现Portlet的功能与文章《在RAD7中开发JSR168 Portlet》一致。 学习此篇教程前建议先学习...
  • freewind88
  • freewind88
  • 2008年08月04日 19:37
  • 2214

Portlet开发入门实例

1原生Portlet开发 这是最简单、最本质的开发方式,直接基于Portlet规范定义的接口开发Portlet。优点是贴近底层比较灵活, 缺点当然就是所有事情都要自己去做。就好比不用Spr...
  • dc_726
  • dc_726
  • 2013年09月21日 14:28
  • 9376

[Liferay]使用Spring MVC开发Portlet应用

开发环境 IDE                    : Liferay Developer Studio Version: 1.6.1.v201212111822 Liferay         ...
  • Paranoid_Android
  • Paranoid_Android
  • 2013年04月09日 16:46
  • 1950

Portlet开发例子HelloWorld

下面的例子基本参照http://jim19770812.blogspot.com/2008/08/eclipsepluto-116portlet.html上写的。 首先,安装portlet容器P...
  • zhoujianli12
  • zhoujianli12
  • 2012年12月06日 22:06
  • 3677

portlet JSR168 上传下载

在portlet  jsR 168中实现上传下载的问题/**************************************************portlet上传*************...
  • antheamin
  • antheamin
  • 2007年08月30日 11:49
  • 554

JSR168 Portlet related

1. portlet request divide  into action request and render request Render parameters allow the portle...
  • echohfut
  • echohfut
  • 2012年10月08日 13:39
  • 180
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在RAD7中开发JSR168 Portlet (四)
举报原因:
原因补充:

(最多只允许输入30个字)