第二个示例:在Portlet配置页面中添加设置界面,在视图页面中显示用户设定的网页链接,同时可以控制该网页的宽度和高度。
在第一个示例项目中添加代码实现本示例。
(1)在PortletExamplePortlet.java中定义变量。
publicstaticfinal String CONFIG_TITLE = "PortletExamplePortletConfigTitle";
publicstaticfinal String CONFIG_URL = "PortletExamplePortletConfigUrl";
publicstaticfinal String CONFIG_WIDTH = "PortletExamplePortletConfigWidth";
publicstaticfinal String CONFIG_HEIGHT = "PortletExamplePortletConfigHeight";
publicstaticfinal String CONFIG_MAXWIDTH = "PortletExamplePortletConfigMaxWidth";
publicstaticfinal String CONFIG_MAXHEIGHT = "PortletExamplePortletConfigMaxHeight";
publicstaticfinal String CONFIG_CANCEL = "PortletExamplePortletConfigCancel";
(2)编辑PortletExamplePortlet.java,处理CONFIG_SUBMIT和CONFIG_CANCEL按钮事件,在函数processAction中针对配置视图的提交和取消进行处理,将各参数值存入到PortletPreferences中。
if( request.getParameter(CONFIG_SUBMIT) != null ) {
PortletPreferences prefs = request.getPreferences();
try {
prefs.setValue(CONFIG_TITLE,request.getParameter(CONFIG_TITLE));
prefs.setValue(CONFIG_URL,request.getParameter(CONFIG_URL));
prefs.setValue(CONFIG_WIDTH,request.getParameter(CONFIG_WIDTH));
prefs.setValue(CONFIG_HEIGHT,request.getParameter(CONFIG_HEIGHT));
prefs.setValue(CONFIG_MAXWIDTH,request.getParameter(CONFIG_MAXWIDTH));
prefs.setValue(CONFIG_MAXHEIGHT,request.getParameter(CONFIG_MAXHEIGHT));
prefs.store();
} catch( ReadOnlyException roe ) {
} catch( ValidatorException ve ) {
}
response.setPortletMode(PortletMode.VIEW);
}
if( request.getParameter(CONFIG_CANCEL) != null ) {
response.setPortletMode(PortletMode.VIEW);
}
(3)编辑PortletExamplePortletConfig.jsp,删除RAD自动生成的代码,设计参数提交页面。
<%@page session="false" contentType="text/html" pageEncoding="GB18030" import="javax.portlet.*,portletexample.*" %>
<%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects/>
<%
PortletPreferences prefs = renderRequest.getPreferences();
if (prefs != null) {
String title = prefs.getValue(PortletExamplePortlet.CONFIG_TITLE, "ConfigTitle");
String url = prefs.getValue(PortletExamplePortlet.CONFIG_URL, "http://www.csdn.net");
String width = prefs.getValue(PortletExamplePortlet.CONFIG_WIDTH, "50%");
String height = prefs.getValue(PortletExamplePortlet.CONFIG_HEIGHT, "400");
String maxwidth = prefs.getValue(PortletExamplePortlet.CONFIG_MAXWIDTH, "100%");
String maxheight = prefs.getValue(PortletExamplePortlet.CONFIG_MAXHEIGHT, "800");
%>
<FORM ACTION="<portlet:actionURL/>"METHOD="POST">
Title:<INPUT NAME="<%=PortletExamplePortlet.CONFIG_TITLE%>"VALUE="<%=title%>"TYPE="text"><BR>
URL:<INPUT NAME="<%=PortletExamplePortlet.CONFIG_URL%>"VALUE="<%=url%>"TYPE="text"><BR>
Width:<INPUT NAME="<%=PortletExamplePortlet.CONFIG_WIDTH%>"VALUE="<%=width%>"TYPE="text"><BR>
Height:<INPUT NAME="<%=PortletExamplePortlet.CONFIG_HEIGHT%>"VALUE="<%=height%>"TYPE="text"><BR>
MaxWidth:<INPUT NAME="<%=PortletExamplePortlet.CONFIG_MAXWIDTH%>"VALUE="<%=maxwidth%>"TYPE="text"><BR>
MaxHeight:<INPUT NAME="<%=PortletExamplePortlet.CONFIG_MAXHEIGHT%>"VALUE="<%=maxheight%>"TYPE="text"><BR>
<INPUT NAME="<%=PortletExamplePortlet.CONFIG_SUBMIT%>"TYPE="submit" value="Save">
<INPUT NAME="<%=PortletExamplePortlet.CONFIG_CANCEL%>"TYPE="submit" value="Cancel">
</FORM>
<%
} else {
%>
Error: PortletPreferences is null.
<%
}
%>
(4)修改PortletExamplePortletView.jsp,输出网页内容,使用的是自组织html的方法。getWindowState()方法可以获取目前portlet的窗口状态,是最大化、最小化还是普通状态,从而确定网页宽度和高度。
<%@page session="false" contentType="text/html" pageEncoding="GB18030" import="javax.portlet.*,portletexample.*" %>
<%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects/>
<%
StringBuffer sbContentHTML = new StringBuffer();
PortletPreferences prefs = renderRequest.getPreferences();
String sFrameWidth, sFrameHeight;
if (prefs != null) {
if (renderRequest.getWindowState().equals(WindowState.MAXIMIZED)) {
sFrameWidth = prefs.getValue(PortletExamplePortlet.CONFIG_MAXWIDTH, "100%");
sFrameHeight = prefs.getValue(PortletExamplePortlet.CONFIG_MAXHEIGHT, "800");
} else {
sFrameWidth = prefs.getValue(PortletExamplePortlet.CONFIG_WIDTH, "50%");
sFrameHeight = prefs.getValue(PortletExamplePortlet.CONFIG_HEIGHT, "400");
}
sbContentHTML.append("<iframe frameborder=0");
sbContentHTML.append(" src=\"" + prefs.getValue(PortletExamplePortlet.CONFIG_URL, "http://www.csdn.net") + "\"");
sbContentHTML.append(" width=\"" + sFrameWidth + "\"");
sbContentHTML.append(" height=\"" + sFrameHeight + "\"");
sbContentHTML.append("></iframe>");
out.print(sbContentHTML.toString());
} else {
%>
Error: PortletPreferences is null.
<%
}
%>
5.全部修改完成后保存,导出WAR安装包,更新Portal6上的Web模块,然后查看页面。可以看到初始页面显示的是CSDN,这是由于没有初始值,所以各参数取出的都是getValue函数中设置的默认值,Portlet窗体高度为400象素,网页宽度50%。
选择最大化菜单,可以发现网页宽度变为100%,显示的是完整网页了,窗体高度也拉长了,这就是由于在最大化状态下网页使用的宽度和高度参数值不同。
选择配置菜单进入配置模式,输入各参数值然后保存。
保存后页面再次转往视图,此时显示的页面就改变了,Portlet窗体高度为300象素,网页宽度100%,这都是刚才设置的内容。
如此,第二个Portlet示例也就完成了。
读者可以尝试在生成的网页链接中添加其它的参数和内容,从而控制更多的网页显示内容。
累了,去
读意优休息一下下,QQ空间,美文,非主流,网络日记,搞笑短信,祝福短信,热门短信,有意思啊
分享到:
相关推荐
在RAD7中开发JSR168 Portlet
开发portlet过程:包括:1.1 类名规范;1.2 RAD7开发JSR168 portlet规范;1.3编写代码 .......
RAD开发J2EE项目 RAD开发J2EE项目
使用RadStudio XE8开发iOS及Android移动应用的官方教程,比较详细,参考性比较强。
rad开发webservice的例子
RAD Studio Delphi XE7简体中文一键汉化
EntireJ 是一个 RAD 快速应用开发环境,用于构建高度可伸缩的企业级应用,基于 RCP/RAP、JavaFX 平台以及 Android 和 iOS 移动平台。使用强大的声明式特性。 标签:EntireJ J2EE框架
使用IBM的RAD7.5进行java开发,布署详细教程
RAD Studio 10.2 Indy 网络开发,在RAD Studio 10.2中使用Indy组件开发网络通信软件的说明书
在移动端方面,delphi xe7提供mobile apps的连结功能,可以支援WiFi和蓝牙,让您现有Windows 应用程式可延伸的更为广泛,强大的平行执行函式库赋予了开发人员不可思议的程式码平行执行能力,更不用说威力十足的EMS...
Embarcadero RAD Studio 2010开发的MP3播放器
开发工具IBM RAD7 服务器运行时:Websphere6.0 类型:项目交换
RAD Studio XE7 绿色版.7z
RAD Studio XE7 odac
rad下集成开发web services.doc
RadStudio XE7 Patch For Window7 64Bit
Rad xe7 的最终破解文件,网络上找到的最新可用的文件。已经在64位win7系统上成功安装,使用方法和sn见文件内说明。
新平台允许您在更多平台上支持更大的项目,开发环境中的内存增加一倍,支持的项目大小增加一倍。除了,多显示器支持和数十个新的开发环境功能旨在加快代码创建,让您的工作比以往任何时候都更有效率。该程序集包括:...
Rad Berlin 移动开发,E文的,我也没看内容,别说我坑,需要的就下,不要分的。
rad7rrrrrrrrrrrrrrrrrr