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

本文介绍Liferay门户中Portlet的扩展机制,重点解析如何通过扩展GenericPortlet实现自定义功能,包括配置默认操作及不同类型的Portlet实现。
JSR168规范规定,所有Portlet都必须直接地或者间接地实现Portlet接口。同时,也提供了一个叫GenericPortlet的基类,该类继承了Portlet接口,统一定义了可供 Portal 容器识别和调用的方法。因此,大部分情况下,开发人员只需要继承GenericPortlet这个基类,而不必直接实现Portlet接口。
Liferay Portal也是一个支持JSR168的企业门户,我们来看看在它的内部,是如何扩展GenericPortlet的。
1)      它自定义类LiferayPortlet扩展GenericPortlet,增加几个模式,如CONFIGEDIT_GUESTEDIT_DEFAULTPREVIEWPRINT.
2)      定义class StrutsPortlet,扩展LiferayPortlet,初始化模式参数,并定义了process action的过程。在liferay中,配置文件portlet-custom.xml中配置各portlet的一些,其中有个很重要的参数是portlet-class,该参数的值一般是com.liferay.portlet.StrutsPortlet,表明该portletstruts portlet.
3)      定义类JSPPortlet,扩展LiferayPortlet,该类在liferay中用不上,所以这边不做研究。简单提一下,如果参数portlet-class配置的值是JSPPortlet,那么该portletJSPPortlet
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没有配置editActionviewAction的值时,在代码中赋予默认的值
下面图示了这个继承、扩展关系:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值