深入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 ,通过查看该类的源代码:
	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 的值时,在代码中赋予默认的值
下面图示了这个继承、扩展关系:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值