第二部分 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 閱讀(4560)
評論(0) 編輯 收藏 所屬分類:
Java