电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

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


发布日期:2019/4/16
 

JSR规范规定所有Portlet都必须直接地或者间接地实现Portlet接口同时也提供了一个叫GenericPortlet的基类该类继承了Portlet接口统一定义了可供 Portal 容器识别和调用的方法因此大部分情况下开发人员只需要继承GenericPortlet这个基类而不必直接实现Portlet接口

Liferay Portal也是一个支持JSR的企业门户我们来看看在它的内部是如何扩展GenericPortlet的

) 它自定义类LiferayPortlet扩展GenericPortlet增加几个模式如CONFIGEDIT_GUESTEDIT_DEFAULTPREVIEWPRINT

) 定义class StrutsPortlet扩展LiferayPortlet初始化模式参数并定义了process action的过程在liferay中配置文件portletcustomxml中配置各portlet的一些其中有个很重要的参数是portletclass该参数的值一般是comliferayportletStrutsPortlet表明该portlet是struts portlet

) 定义类JSPPortlet扩展LiferayPortlet该类在liferay中用不上所以这边不做研究简单提一下如果参数portletclass配置的值是JSPPortlet那么该portlet是JSPPortlet

) 注意到有个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 {

superinit(config);

if (ValidatorisNull(editAction)) {

editAction = DEFAULT_EDIT_ACTION;

}

if (ValidatorisNull(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 {

superinit(config);

if (ValidatorisNull(editAction)) {

editAction = DEFAULT_EDIT_ACTION;

}

if (ValidatorisNull(viewAction)) {

viewAction = DEFAULT_VIEW_ACTION;

}

}可以清楚的知道IFramePortlet定义自身所需要的default action当portlet没有配置editAction和viewAction的值时在代码中赋予默认的值

下面图示了这个继承扩展关系

上一篇:An Thread Group Factory work&

下一篇:Swing小结