天天看點

分享一些關于Liferay開發的一些文檔和中文API

[b]1.Liferay資料分類目錄[/b]:[url]http://www.nethref.com/?cat=39[/url]

[b]2.Liferay标簽使用說明文檔[/b]:[url]http://www.nethref.com/api/liferay-portal-doc-6.0.3/taglibs/[/url]

[b]3.Liferay DTD文檔類型定義使用說明[/b]: [url]http://www.nethref.com/api/liferay-portal-doc-6.0.3/definitions/[/url]

[b]4.Liferay API文檔[/b]:[url]http://www.nethref.com/api/liferay-portal-doc-6.0.3/javadocs/[/url]

[b]5.基于Java開發常用API綜合[/b]:[url]http://www.nethref.com/api/[/url]

Liferay應用跟所有的Web應用一樣,Liferay Portal采用多個XML部署描述檔案,來初始化部署資訊,規範操作模式,比如Portlet的初始化資訊、可用的Portlet清單、Portlet所屬角色和使用者組等等。通過這些部署描述檔案,Liferay Portal可以在啟動的時候自動加載Portlet,根據需要生成所需的Portlet頁面。普通的Web應用,也可以很友善的轉換成可部署的Portlet,p 這種實作也是JSR168和JSR286規定的。

[color=red]1. web.xml[/color]

web.xml是所有Java Web應用的部署描述檔案。其正式的規範由http://java.sun.com/dtd/web-app_2_3.dtd 定義。與其他普通Web應用相比,Liferay Portal的Portlet 應用還需要在web.xml中增加如下内容:

[color=green] a、監聽器:[/color]

<listener>
     <listener-class>com.Liferay.portal.servlet.PortletContextListener</listener-class>
</listener>
           

這個要求web 伺服器監聽所有跟Portlet有關的請求資訊,并将監聽到的内容交給Liferay Portal的Portlet容器處理。

[color=green] b、Portlet Servlet映射: [/color]

<servlet>   
    <servlet-name>yourPortlet</servlet-name>
    <servlet-class>com.liferay.portal.servlet.PortletServlet</servlet-class>
   <init-param>
        <param-name>Portlet-class</param-name>
         <param-value>full.name.of.yourPortlet</param-value>
    </init-param>
     <load-on-startup>0</load-on-startup>
</servlet>

<SPAN style="LINE-HEIGHT: 17px; FONT-FAMILY: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; WHITE-SPACE: normal; COLOR: #555555"><servlet-mapping><BR style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><servlet-name>yourPortlet</servlet-name><BR style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><url-pattern>/yourPortlet/*</url-pattern><BR style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"></servlet-mapping></SPAN>
           

其中,servlet-name為部署的servlet名稱;init-param中定義自己的Portlet類,這個param-name要跟portlet.xml、liferay-portlet.xml、liferay-display.xml中的portlet-name節點值一緻。

[color=green] c、标簽庫映射:[/color]

<taglib>
<taglib-uri>http://java.sun.com/Portlet</taglib-uri>
<taglib-location>/WEB-INF/tld/liferay-Portlet.tld</taglib-location>
</taglib>
           

定義了這個标簽庫映射,在JSP檔案中才可以使用諸如<portlet:defineObjects />在内的一些特定的Portlet标簽。

如果在應用中有用到其他的元素,可以按照web.xml規範加入到相應的位置當中。Liferay Portal預設的liferay應用,由于使用了Struts、Hibernate、Spring在内的多個開源架構,是以{PORTAL_HOME}/liferay/WEB-INF/web.xml檔案會相對複雜些。在自定義的Portlet,可以使用getPortletConfig().getInitParameter(“ ”)和getPortletConfig().getParameterNames(“”)兩個方法來取得在web.xml中定義的參數。

[color=red]2 portlet.xml[/color]

portlet.xml用來定義Portlet的諸如部署名稱、初始化參數、支援模式、resource bundle等普通的初始化資訊,包括:portlet-name、display-name、portlet-class、init-param、expiration-cathe、supports、portlet-info、security-role-ref等等。其正式的規範請參考:[url]http://java.sun.com/xml/ns/Portlet/Portlet-app_1_0.xsd[/url] 。根目錄為portlet-webapp。

[color=darkred]portlet-name[/color]:Portlet的規範名稱,在Portlet應用中必須唯一,主要用在Portlet部署和映射中。

[color=darkred]display-name[/color]:供部署工具調用的Portlet簡稱,在Portlet應用中必須唯一。

[color=darkred]portlet-class[/color]:Portlet對應的類,這個類必須直接或者間接的繼承javax.Portlet.GenericPortlet。

[color=darkred]init-param[/color]:初始化參數,有成對的<name>和<value>子元素。通常定義Portlet相應模式下可用的JSP頁面。

[color=darkred]expiration-cathe[/color]:定義Portlet加載允許最長的過期時間,以秒為機關。-1代表用不過期。

[color=darkred]supports[/color]:定義Portlet支援的模式。所有的Portlet都必須支援浏覽模式。

其他的元素含義請參照:[url]http://java.sun.com/xml/ns/Portlet/Portlet-app_1_0.xsd[/url]當Web 應用中有多個的Portlet時,可以統一的在Portlet。xml中定義一組的<portlet>元素。

<portlet>
<portlet-name>TestPortlet</Portlet-name>
<display-name>TestPortlet</display-name>
<portlet-class>com.educhina.portal.FirstPortlet</Portlet-class>
<init-param>
<name>view-jsp</name>
<value>/view.jsp</value>
</init-param>
<init-param>
<name>edit-jsp</name>
<value>/edit.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<supports>
<mime-type>text/html</mime-type>
<Portlet-mode>edit</Portlet-mode>
</supports>
<portlet-info>
<title>educhina Test Portlet</title>
<short-title> educhina Test Portlet </short-title>
<keywords> educhina Test Portlet </keywords>
</portlet-info>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref><SPAN style="WHITE-SPACE: normal"></portlet></SPAN>
           

[color=red]3 liferay-Portlet.xml[/color]

定義Portlet預設可用的使用者組、預設模闆、是否支援多個執行個體等,規範由http://www.liferay.com/dtd/liferay-Portlet-app_3_5_0.dtd 定義。liferay-portlet.xml主要包含單獨或者成組的<portlet>、<role-mapper>。其中,<portlet>下包含<portlet-name>、<struts-path>、<use-default-template>、<instanceable>等子元素,<portlet-name>在應用中必須唯一,且要跟portlet.xml相同;<role-mapper>下包含成對的<role-name>、<role-link>子元素。具體的元素含義請檢視上述dtd定義。

<liferay-portlet-app>
<portlet>
<portlet-name> TestPortlet </portlet-name>
<struts-path> TestPortlet </struts-path>
<use-default-template>true</use-default-template>
<instanceable>true</instanceable>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
           

[color=red]4 liferay-display.xml[/color]

定義Portlet預設的所屬類别。Liferay Portal對Portlet實行按類别管理和劃分使用者權限。正如我們在使用者政策中提到的,可以制定某個類别可用的使用者組、使用者和角色,友善權限控制。Liferay-display.xml規範由http://www.liferay.com/dtd/liferay-display_3_5_0.dtd 定義。

Liferay-display.xml中,<display>下成組的<category>描述了可用的類别,其中portlet元素的id必須與liferay-portlet.xml的portlet-name保持一緻,且在應用中唯一。

<display>
<category name=”category.test”>
<portlet id=”TestPortlet” />
</category>
</display>
           

[color=red]5 liferay-layout-templates.xml[/color]

定義Portal可用的布局。正如我們在布局與品質中提到的那樣,Portal采用tpl檔案來規劃桌面的布局。liferay-layout-templates.xml采用成組的layout-template來建構一個可用的布局清單。此xml的規範由http://www.liferay.com/dtd/liferay-layout-templates_3_6_0.dtd 來定義。

本文采用Liferay Portal預設的布局,暫時不需要定義自己的布局,故不準備深入讨論。讀者有興趣可以自己檢視相關資料。

<layout-templates>
<layout-template id=”1_column” name=”1 Column”>
<template-path>/html/layouttpl/1_column。tpl</template-path>
</layout-template>
<layout-template id=”2_columns_i” name=”2 Columns (50/50)”>
<template-path>/html/layouttpl/2_columns_i。tpl</template-path>
</layout-template>
<layout-template id=”3_columns” name=”3 Columns”>
<template-path>/html/layouttpl/3_columns。tpl</template-path>
</layout-template>
<layout-template id=”1_2_1_columns” name=”1-2-1 Columns”>
<template-path>/html/layouttpl/1_2_1_columns。tpl</template-path>
</layout-template>
           

[color=red]6 liferay-look-and-feel.xml[/color]

定義Portal可用品質的模闆、圖檔、樣式表等等,定義完畢後,Portal可以通過“布局與品質”管理工具來進行品質的切換。Liferay-look-and-feel.xml規範由[url]http://www.liferay.com/dtd/liferay-look-and-feel_3_5_0.dtd[/url] 定義。

本文采用Liferay Portal預設的品質,不準備對品質的自定義深入探讨。有興趣的讀者可以檢視相關資料。

源文位址:[url]http://liferay.group.iteye.com/group/blog/891295[/url]