随笔-86  评论-767  文章-3  trackbacks-3

第二部分 Liferay Portal 二次开发

本部分主要内容

GenericPortlet 自定义Portlet 部署描述文件

第三章 开发自己的Portlet

在了解了Liferay Portal的基础架构,初步体会Liferay Portal良好的个性化定制之后,本章将开始Liferay Portal二次开发之旅,讲述并扩展Portlet的超类GenericPortlet,创建或者修改部署描述文件,构建属于自己的Portlet

第一节  重要的基类:GenericPortlet

Servlet一样,编写的Portlet也必须直接或者间接的扩展基类GenericPortlet,这个是由JCP针对Portal提出的JSR168规范定义的。只要扩展自规范的GenericPortlet,所有的Portlet都可以在支持JSR168规范的Portal服务器上运行。

GenericPortlet统一定义了可供Portal容器识别和调用的方法,包括:

public Init():初始化;

public Init(PortletConfig) :初始化;

public getInitParameter(String):取得在Portlet.xml中定义的初始化参数;

public getInitParameterNames():取得在Portlet.xml中定义的全部初始化参数;

public getPortletConfig():取得包含初始化参数的配置对象PortletConfig实例;

public getPortletContext():取得Portlet上下文;

public getPortletName():取得在Portlet.xml中定义的Portlet名称。

public getResourceBundle(Locale) :取得Portlet国际化的Resource Bundle

protected getTitle(RenderRequest) :取得Portlet的标题;

protected doView(RenderRequestRenderResponse) Portlet浏览模式的处理方法;

protected doEdit(RenderRequestRenderResponse) Portlet编辑模式的处理方法;

protected doHelp(RenderRequestRenderResponse) Portlet帮助模式的处理方法;

protected doDispatch(RenderRequestRenderResponse) Portlet行为分发;

protected processAction(RenderRequestRenderResponse) Portlet处理Action Request的方法;

protected render(RenderRequestRenderResponse)Portal处理Render Request的方法;

public destroy()Portlet销毁,终止其生命周期。

Portlet Portal运行的时候,doViewdoEditdoHelp三个方法分别被调用,用以生成Portlet标记。同样也可以调用Servlet生成Portlet标记,或者不调用JSP或者Servlet,直接在方法中得到PrintWriter然后用最简单的pw.println()打印出内容。这个过程类似Servlet,如下:

PrintWriter pw = renderResponse.getWriter();

pw.println(“Helloworld!”);

Servlet类似,可以使用getInitParamter(String s)得到配置文件中Portlet的初始值,只不过Servletweb.xml中,而Portletportlet.xml中。

portlet.xml

       jspView

       /jsp/view.jsp


针对如上portlet.xml中的初始化信息,可以采用如下的调用方式:

SimplePortlet.java

String jspName = getPortletConfig().getInitParameter("jspView");

第二节  Portlet标签

Servlet一样,Portlet也自定义了很多灵活的标签。通过这些标签,可以调用Portlet内部的参数比如renderResponserenderRequestPortletConfig等,在JSP中跟Portlet通信。当然,在使用之前,除了要在web.xml中声明标签库外,还要在JSP的头部声明标签库调用:<%@ taglib uri="http://java.sun.com/Portlet" prefix="Portlet" %>

3.2.1  defineObjects标签

在使用Portlet典型标签之前,要见声明,这样才可以使用其他的标签。defineObjects中间不允许定义任何属性和包含任何内容。

3.2.2  renderURL标签

属性

值类型

对应值

windowState

String

minimized

normal

maximized

 

PortletMode

String

view edit help

var

String

 

secure

 

String

true

false

创建一个当前RenderURL,当访问它时将使Portlet窗口变为最大化状态,模式变为浏览。子元素会在生成的RenderURL中增加numberpage两个参数和值。

3.2.3  actionURL标签

属性

值类型

对应值

windowState

String

minimized

normal

maximized

 

portletMode

String

view edit help

var

String

 

secure

 

String

true

false

创建一个当前ActionURL,当访问它时将使Portlet窗口变为正常状态,模式变为编辑。子元素会在生成的ActionURL中增加action参数和值。

renderURLactionURL两个标签在诸如生成form表单的action等方面特别有用。

3.2.4  param标签

属性

值类型

name

String

用在renderURLactionURL标签内部,用来在生成的URL中增加参数和值。param标签不运行body内容存在。

3.2.5  namespace标签

为目前的Portlet产生一个唯一的Value,防止与其他Portlet或者Portal上面的Value冲突。

上述标签的具体属性及其约束,请参阅{PORTAL_HOME}/liferay/WEB-INF/tld/liferay-portlet.tld

posted on 2005-10-21 09:11 eamoi 阅读(4554) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: