`
buliedian
  • 浏览: 1249226 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

在RAD7中开发JSR168 Portlet (二)

阅读更多
第二个示例:在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

    【在 RAD7 中开发 JSR168 Portlet】是一个关于使用IBM Rational Application Developer (RAD) 7.0.0.3版本开发遵循JSR168标准的portlet的教程。JSR168(Java Portlet API 1.0)是Java Community Process发布的一个...

    Struts2 JSR168 Portlet的开发

    Struts2 JSR168 Portlet的开发是构建在Java Portlet规范(JSR168)基础上,结合流行的MVC框架Struts2来创建适用于企业级门户平台的应用组件。这种开发方式允许开发者利用Struts2的强大功能,如Action、Interceptor、...

    portlet开发样例.docx

    portlet开发样例主要涵盖两大部分:portlet的类名规范以及使用RAD7开发JSR168portlet的过程。本文将详细阐述这两个方面的内容。 首先,我们来看portlet的类名规范。类名是portlet开发中的一个重要组成部分,它需要...

    rad开发webservice的例子

    综上所述,这个压缩包中的内容可能包含一个使用RAD 7开发的基于JSR 168的portlet示例,以及详细说明如何在RAD环境中创建和部署Web服务的文档。这些技术都是Java企业级开发中的关键组成部分,对于理解和实践企业级...

    portlet学习资料

    1. **IBM Portlet Developer Tools**:集成在IBM Rational Application Developer (RAD) 或 IBM WebSphere Integration Developer (WID) 中,提供图形化界面,简化portlet的创建和调试过程。 2. **WebSphere Portal ...

    使用spring mvc portlet 3.0开发IBM WebSphere Portlet应用

    在本文中,我们将深入探讨如何使用Spring MVC Portlet 3.0框架开发针对IBM WebSphere Portal的应用。Spring MVC Portlet是Spring Framework的一部分,它提供了一种优雅的方式来构建portlet应用程序,而IBM WebSphere...

    IBM Rational Application Developer V6 Portlet Application Development and Portal Tools

    - **MVC 架构**:书中详细介绍了如何在 Portlet 开发中应用 MVC 架构,并提供了具体的示例代码。 - **Portlet MVC 架构**:Portlet MVC 架构是针对 Portlet 的 MVC 特殊实现,本书中提供了详细的说明和实例。 - **...

    在RAD/RSA上安装配置Portal 6.0 和优化性能并减少资源消耗的方法

    - 通过portlet开发,可以将各种业务逻辑和用户界面集成到门户中,这需要对JSR168或JSR286标准有深入理解。 - 为了适应企业需求,可能还需要自定义主题、布局和工作流程。 6. **包括的文件**: - "was"可能是指...

    Portal培訓教材_FromIBM(5)

    特别是,在安装过程中有一个关键步骤需要特别注意,即确保选中Portlet开发支持的相关选项,否则将无法进行Portlet开发。 #### Portlet开发步骤 - **传统开发流程**:传统上,Portlet开发涉及多个步骤,包括编写...

    WebSphere Portal 开发文档

    文档可能包含使用IBM Rational Application Developer (RAD)或其他IDE进行portlet开发的步骤,以及如何利用Portlet Developer Toolkit (PDT)进行快速开发。 三、portlet生命周期管理 详细说明portlet的开发、测试、...

    Websphere Portal 开发教材

    3. **开发环境**:开发Websphere Portal应用通常使用IBM RAD(Rational Application Developer)或Eclipse IDE,配合Websphere Portlet Factory或直接编写portlet代码(Java或JSF)。 4. **portlet开发**:portlet...

    QCon 2009 beijing全球企业开发大会ppt:10.Java在企业级开发中的应用

    【Java在企业级开发中的应用】 毛新生,作为IBM中国开发中心的CTO,在QCon 2009北京全球企业开发大会上分享了关于Java在企业级开发中的重要性和应用。他的演讲深入探讨了Java如何在企业软件开发中扮演关键角色,并且...

Global site tag (gtag.js) - Google Analytics