第二部分 Liferay Portal 二次開發(fā)
本部分主要內(nèi)容
GenericPortlet 自定義Portlet類 部署描述文件
在了解了Liferay Portal的基礎(chǔ)架構(gòu),初步體會(huì)Liferay Portal良好的個(gè)性化定制之后,本章將開始Liferay Portal二次開發(fā)之旅,講述并擴(kuò)展Portlet的超類GenericPortlet,創(chuàng)建或者修改部署描述文件,構(gòu)建屬于自己的Portlet。
第一節(jié)? 重要的基類:GenericPortlet
像Servlet一樣,編寫的Portlet也必須直接或者間接的擴(kuò)展基類GenericPortlet,這個(gè)是由JCP針對(duì)Portal提出的JSR168規(guī)范定義的。只要擴(kuò)展自規(guī)范的GenericPortlet,所有的Portlet都可以在支持JSR168規(guī)范的Portal服務(wù)器上運(yùn)行。
GenericPortlet統(tǒng)一定義了可供Portal容器識(shí)別和調(diào)用的方法,包括:
public Init():初始化;
public Init(PortletConfig) :初始化;
public getInitParameter(String):取得在Portlet.xml中定義的初始化參數(shù);
public getInitParameterNames():取得在Portlet.xml中定義的全部初始化參數(shù);
public getPortletConfig():取得包含初始化參數(shù)的配置對(duì)象PortletConfig實(shí)例;
public getPortletContext():取得Portlet上下文;
public getPortletName():取得在Portlet.xml中定義的Portlet名稱。
public getResourceBundle(Locale) :取得Portlet國(guó)際化的Resource Bundle;
protected getTitle(RenderRequest) :取得Portlet的標(biāo)題;
protected doView(RenderRequest,RenderResponse) :Portlet瀏覽模式的處理方法;
protected doEdit(RenderRequest,RenderResponse) :Portlet編輯模式的處理方法;
protected doHelp(RenderRequest,RenderResponse) :Portlet幫助模式的處理方法;
protected doDispatch(RenderRequest,RenderResponse) :Portlet行為分發(fā);
protected processAction(RenderRequest,RenderResponse) :Portlet處理Action Request的方法;
protected render(RenderRequest,RenderResponse):Portal處理Render Request的方法;
public destroy():Portlet銷毀,終止其生命周期。
在Portlet Portal運(yùn)行的時(shí)候,doView、doEdit、doHelp三個(gè)方法分別被調(diào)用,用以生成Portlet標(biāo)記。同樣也可以調(diào)用Servlet生成Portlet標(biāo)記,或者不調(diào)用JSP或者Servlet,直接在方法中得到PrintWriter然后用最簡(jiǎn)單的pw.println()打印出內(nèi)容。這個(gè)過程類似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
針對(duì)如上portlet.xml中的初始化信息,可以采用如下的調(diào)用方式:
SimplePortlet.java:
String jspName = getPortletConfig().getInitParameter("jspView");
第二節(jié)? Portlet標(biāo)簽
跟Servlet一樣,Portlet也自定義了很多靈活的標(biāo)簽。通過這些標(biāo)簽,可以調(diào)用Portlet內(nèi)部的參數(shù)比如renderResponse、renderRequest、PortletConfig等,在JSP中跟Portlet通信。當(dāng)然,在使用之前,除了要在web.xml中聲明標(biāo)簽庫(kù)外,還要在JSP的頭部聲明標(biāo)簽庫(kù)調(diào)用:<%@ taglib uri="http://java.sun.com/Portlet" prefix="Portlet" %>
3.2.1? defineObjects標(biāo)簽
在使用Portlet典型標(biāo)簽之前,要見聲明,這樣才可以使用其他的標(biāo)簽。defineObjects中間不允許定義任何屬性和包含任何內(nèi)容。
3.2.2? renderURL標(biāo)簽
屬性 |
值類型 |
對(duì)應(yīng)值 |
windowState |
String |
minimized
normal
maximized。
? |
PortletMode |
String |
view, edit , help |
var |
String |
? |
secure
? |
String |
true
false |
創(chuàng)建一個(gè)當(dāng)前RenderURL,當(dāng)訪問它時(shí)將使Portlet窗口變?yōu)樽畲蠡癄顟B(tài),模式變?yōu)闉g覽。子元素會(huì)在生成的RenderURL中增加number、page兩個(gè)參數(shù)和值。
3.2.3? actionURL標(biāo)簽
屬性 |
值類型 |
對(duì)應(yīng)值 |
windowState |
String |
minimized
normal
maximized。
? |
portletMode |
String |
view, edit , help |
var |
String |
? |
secure
? |
String |
true
false |
創(chuàng)建一個(gè)當(dāng)前ActionURL,當(dāng)訪問它時(shí)將使Portlet窗口變?yōu)檎顟B(tài),模式變?yōu)榫庉嫛?/SPAN>子元素會(huì)在生成的ActionURL中增加action參數(shù)和值。
renderURL和actionURL兩個(gè)標(biāo)簽在諸如生成form表單的action等方面特別有用。
3.2.4? param標(biāo)簽
用在renderURL和actionURL標(biāo)簽內(nèi)部,用來在生成的URL中增加參數(shù)和值。param標(biāo)簽不運(yùn)行body內(nèi)容存在。
3.2.5? namespace標(biāo)簽
為目前的Portlet產(chǎn)生一個(gè)唯一的Value,防止與其他Portlet或者Portal上面的Value沖突。
上述標(biāo)簽的具體屬性及其約束,請(qǐng)參閱{PORTAL_HOME}/liferay/WEB-INF/tld/liferay-portlet.tld 。
posted on 2005-10-21 09:11
eamoi 閱讀(4560)
評(píng)論(0) 編輯 收藏 所屬分類:
Java