首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 核心技术 >> 网络编程 >> 正文

深入liferay portal核心之一 portlet扩展分析

JSR168规范规定,所有Portlet都必须直接地或者间接地实现Portlet接口。同时,也提供了一个叫GenericPortlet的基类,该类继承了Portlet接口,统一定义了可供 Portal 容器识别和调用的方法。因此,大部分情况下,开发人员只需要继承GenericPortlet这个基类,而不必直接实现Portlet接口。
    Liferay Portal也是一个支持JSR168的企业门户,我们来看看在它的内部,是如何扩展GenericPortlet的。
    1)      它自定义类LiferayPortlet扩展GenericPortlet,增加几个模式,如CONFIG、EDIT_GUEST、EDIT_DEFAULT、PREVIEW、PRINT.
    2)      定义class StrutsPortlet,扩展LiferayPortlet,初始化模式参数,并定义了process action的过程。在liferay中,配置文件portlet-custom.xml中配置各portlet的一些,其中有个很重要的参数是portlet-class,该参数的值一般是com.liferay.portlet.StrutsPortlet,表明该portlet是struts portlet.
    3)      定义类JSPPortlet,扩展LiferayPortlet,该类在liferay中用不上,所以这边不做研究。简单提一下,如果参数portlet-class配置的值是JSPPortlet,那么该portlet是JSPPortlet。
    4)      注意到有个IFramePortlet扩展了StrutsPortlet,大家可能就有疑问了,为什么在liferay中,有那么多的portlet,单单就它需要扩展StrutsPortlet,通过查看该类的源代码:
    view plaincopy to clipboardprint?
    public static final String DEFAULT_EDIT_ACTION = "/iframe/edit";

    public static final String DEFAULT_VIEW_ACTION = "/iframe/view";

    public void init(PortletConfig config) throws PortletException {

        super.init(config);

        if (Validator.isNull(editAction)) {

            editAction = DEFAULT_EDIT_ACTION;

        }

        if (Validator.isNull(viewAction)) {

            viewAction = DEFAULT_VIEW_ACTION;

        }

    }

     public static final String DEFAULT_EDIT_ACTION = "/iframe/edit";

     public static final String DEFAULT_VIEW_ACTION = "/iframe/view";

     public void init(PortletConfig config) throws PortletException {

      super.init(config);

      if (Validator.isNull(editAction)) {

       editAction = DEFAULT_EDIT_ACTION;

      }

      if (Validator.isNull(viewAction)) {

       viewAction = DEFAULT_VIEW_ACTION;

      }

     }可以清楚的知道,IFramePortlet定义自身所需要的default action,当portlet没有配置editAction和viewAction的值时,在代码中赋予默认的值。
    下面图示了这个继承、扩展关系:

【责编:landy】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航