第二部分 Liferay Portal 二次开发
本部分主要内容
GenericPortlet 自定义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(RenderRequest,RenderResponse) :Portlet浏览模式的处理方法;
protected doEdit(RenderRequest,RenderResponse) :Portlet编辑模式的处理方法;
protected doHelp(RenderRequest,RenderResponse) :Portlet帮助模式的处理方法;
protected doDispatch(RenderRequest,RenderResponse) :Portlet行为分发;
protected processAction(RenderRequest,RenderResponse) :Portlet处理Action Request的方法;
protected render(RenderRequest,RenderResponse):Portal处理Render Request的方法;
public destroy():Portlet销毁,终止其生命周期。
在Portlet Portal运行的时候,doView、doEdit、doHelp三个方法分别被调用,用以生成Portlet标记。同样也可以调用Servlet生成Portlet标记,或者不调用JSP或者Servlet,直接在方法中得到PrintWriter然后用最简单的pw.println()打印出内容。这个过程类似Servlet,如下:
PrintWriter pw = renderResponse.getWriter();
pw.println(“Hello,world!”);
与Servlet类似,可以使用getInitParamter(String s)得到配置文件中Portlet的初始值,只不过Servlet在web.xml中,而Portlet在portlet.xml中。
portlet.xml:
jspView
/jsp/view.jsp
针对如上portlet.xml中的初始化信息,可以采用如下的调用方式:
SimplePortlet.java:
String jspName = getPortletConfig().getInitParameter("jspView");
第二节 Portlet标签
跟Servlet一样,Portlet也自定义了很多灵活的标签。通过这些标签,可以调用Portlet内部的参数比如renderResponse、renderRequest、PortletConfig等,在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中增加number、page两个参数和值。
3.2.3 actionURL标签
属性 |
值类型 |
对应值 |
windowState |
String |
minimized
normal
maximized。
|
portletMode |
String |
view, edit , help |
var |
String |
|
secure
|
String |
true
false |
创建一个当前ActionURL,当访问它时将使Portlet窗口变为正常状态,模式变为编辑。子元素会在生成的ActionURL中增加action参数和值。
renderURL和actionURL两个标签在诸如生成form表单的action等方面特别有用。
3.2.4 param标签
用在renderURL和actionURL标签内部,用来在生成的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 阅读(4548)
评论(0) 编辑 收藏 所属分类:
Java