隨筆-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 閱讀(4563) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 晴隆县| 河东区| 房产| 阳泉市| 泰兴市| 靖宇县| 天镇县| 邢台市| 大厂| 孝昌县| 无棣县| 开鲁县| 永川市| 华容县| 临西县| 德格县| 望都县| 临澧县| 张北县| 峡江县| 隆子县| 迭部县| 伊金霍洛旗| 徐汇区| 万盛区| 安多县| 无极县| 巴林右旗| 海宁市| 南华县| 荥经县| 蒙山县| 湘阴县| 东乡县| 微山县| 上栗县| 历史| 汕尾市| 宜黄县| 壶关县| 喀什市|