完全開(kāi)發(fā)指南_第1頁(yè)
完全開(kāi)發(fā)指南_第2頁(yè)
完全開(kāi)發(fā)指南_第3頁(yè)
完全開(kāi)發(fā)指南_第4頁(yè)
完全開(kāi)發(fā)指南_第5頁(yè)
已閱讀5頁(yè),還剩199頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1Liferay開(kāi)發(fā)平臺(tái)的價(jià)值portalliferay第1Liferay開(kāi)發(fā)平臺(tái)的價(jià)值portalliferay網(wǎng)1-1關(guān)于本教內(nèi)程序員開(kāi)發(fā)liferay6.2的參考手冊(cè)。QQ客服:1229173104(QQ)58487128(QQ群1-2 為L(zhǎng)iferay開(kāi)發(fā)應(yīng)用程Wikipedia上是這樣定義一個(gè)internet或portalwebPortal借portal平臺(tái)所提供的功能可以達(dá)到減少開(kāi)發(fā)時(shí)間成本和一個(gè)對(duì)用戶來(lái)說(shuō)一致LiferayPortal之上進(jìn)行開(kāi)發(fā)應(yīng)用的程序員,你會(huì)問(wèn)最好的快速開(kāi)發(fā)的路徑是什么?Liferay支持兩種主要的基于標(biāo)準(zhǔn)技術(shù)的方案:portlets和OpenSocialgadgets.Portletsjavawebweb頁(yè)面portalportlets,因?yàn)樗鼈儼藢?shí)際的功能,一個(gè)portlet容器緊緊是讓一組合適的portlets組合在一起作為一個(gè)完LIFERAY6.2開(kāi)發(fā)平臺(tái)1[LIFERAY6.2開(kāi)發(fā)平臺(tái)2liferay實(shí)[LIFERAY6.2開(kāi)發(fā)平臺(tái)2liferay實(shí)指定的框架:MVCPortletAlloyPortlet.portletsjava平臺(tái)的完OpenSocialOpenSocialGadgets通常是小的應(yīng)用,用瀏覽器端的技術(shù)編寫(xiě),例如HTML,JavaScript.類(lèi)似portlets,OpenSocialGadgets提供了標(biāo)準(zhǔn)的方法來(lái)為portalportlets則可以實(shí)現(xiàn)任意類(lèi)型的應(yīng)用。因此,OpenSocialgadgets除了包括一OpenSocialgadgetliferaygadget:在遠(yuǎn)程服務(wù)器上執(zhí)行,但是在另外的平臺(tái)程序中展現(xiàn)獲取的信gadgetportalgadget來(lái)用遠(yuǎn)程gadget.gadget:liferayserverportletsgadget在一個(gè)xml文件中定義,下載該文件就可以完成對(duì)該gadget的部署。一旦你保存了一個(gè)新的gadget它就可以讓管理員添加到站點(diǎn)的頁(yè)面上。遠(yuǎn)程的remotegadget添加到其他的portals上的頁(yè)面上,或是社交網(wǎng)絡(luò)上。復(fù)用已經(jīng)存WEB應(yīng)用如果你有個(gè)沒(méi)portlet的應(yīng)用OpenSocialgadget,應(yīng)該怎么辦?你有下面的幾個(gè)選擇:重寫(xiě)應(yīng)用為一個(gè)生成簡(jiǎn)單的portlets負(fù)責(zé)與應(yīng)用交互,并向最終用戶提供服務(wù)。生成OpenSocial對(duì)應(yīng)用進(jìn)行封裝,gadget可以使IFrame來(lái)在一生成OpenSocial對(duì)應(yīng)用進(jìn)行封裝,gadget可以使IFrame來(lái)在一個(gè)portal頁(yè)面上展示應(yīng)用的一部分。生成一個(gè)portlet來(lái)整合遠(yuǎn)程應(yīng)用可以使用IFrame或是一個(gè)http代理(例如使用LiferayWebProxyportlet),這種方案需要portal應(yīng)用之間實(shí)現(xiàn)單點(diǎn)登錄。如果該應(yīng)用是使用實(shí)現(xiàn)的,可以經(jīng)過(guò)小的改動(dòng)轉(zhuǎn)為如果該應(yīng)用是jsf來(lái)實(shí)現(xiàn)可以經(jīng)過(guò)小的改動(dòng)來(lái)轉(zhuǎn)為得到支持的技術(shù)框Liferay做為一個(gè)平臺(tái),可以很好的與任意的java技術(shù)相兼容,這需要portletj2ee設(shè)計(jì)架構(gòu)標(biāo)準(zhǔn)portlet應(yīng)用都可以使用它自己的一組庫(kù)和技術(shù)模塊管它們是否被liferay采用。該部分我們重點(diǎn)推薦portlet組件;其他類(lèi)型的插件則有較多的限制,例Ext插件只允許使用與liferay核心代碼使用的庫(kù)相兼容的庫(kù)。(gwt當(dāng)不確定的時(shí)候,選擇相對(duì)簡(jiǎn)單的解決方案:portlet應(yīng)用通常要比獨(dú)立的或Alloyportlet.gwt,vaadinJSP的案例(ICEfacesRichFaces).你也許會(huì)JavaScriptLiferay來(lái)使用任意的腳本庫(kù),例如jQuery,Dojo,YUI,Sencha(以前叫做ExtJs),和Sproutcore.Liferay的服務(wù)構(gòu)建器可以為數(shù)據(jù)庫(kù)持久化自動(dòng)生成類(lèi)和接口及服務(wù)層。它口。在portal實(shí)例上的對(duì)象與本地接口交互,而外部的對(duì)象與遠(yuǎn)程接口交互,通過(guò)JSON,SOAP和JavaRMI.LIFERAY6.2開(kāi)發(fā)平臺(tái)3[LIFERAY6.2開(kāi)發(fā)平臺(tái)41-3節(jié)擴(kuò)展和自定義Liferay[LIFERAY6.2開(kāi)發(fā)平臺(tái)41-3節(jié)擴(kuò)展和自定義Liferay提供了很多非常好的特性:包括一個(gè)功能豐富的內(nèi)容管理系統(tǒng),一個(gè)社Liferay被設(shè)計(jì)成可被自定義的架構(gòu),它的很多插件和插件類(lèi)型可以組合應(yīng)用到war自定義展示themes讓你可以靈活定義web站點(diǎn)的外觀,你可以指定顏色的圖片,你可 界面元素上應(yīng)用樣式表,例如字體,連接,索欄,頁(yè)頭,和頁(yè)腳,通過(guò)集成css和Velocity或FreeMarker模板Liferay的AlloyUIAPI框架,你可以使用一個(gè)統(tǒng)一的接口在通ui元素上ui元素則組成了web頁(yè)面,這成站點(diǎn)非常容且這些站點(diǎn)可以對(duì)桌面訪問(wèn)客戶訪問(wèn)客戶手機(jī)設(shè)備訪問(wèn)客戶都可以展示良好的頁(yè)面重要讓你集中精力在設(shè)計(jì)站點(diǎn) 而不是實(shí)現(xiàn) 所具備的通用功能上添加新的預(yù)定義頁(yè)面布局:布局模板Layout布局類(lèi)似主題,但是它主要集中在設(shè)定portlets自定義或擴(kuò)展開(kāi)箱即自定義或擴(kuò)展開(kāi)箱即用功能:Hook插件Hookliferay核心功能的插件,hookportalportal啟動(dòng),關(guān)閉,登錄,登出,會(huì)話生成,會(huì)話銷(xiāo)毀階段執(zhí)行特到自定義功能。Hookportletsjsp模板,最有趣的是hooks也像portlets那樣支持熱部署。高級(jí)定制Ext插件ExtLiferay核心功能實(shí)現(xiàn)的定制,允許你用自己的實(shí)這個(gè)原因,Ext插件僅僅被建議用在的確需要高級(jí)別定制的情況,且沒(méi)有其他可liferayExt插件不會(huì)影Ext插件才會(huì)起作用。1-4節(jié)選擇你的開(kāi)發(fā)工具命令行環(huán)境,該環(huán)境下可以集成范圍非常廣的工具。2)IDE來(lái)最小Apacheant和PluginsSDK:liferay提供的開(kāi)發(fā)環(huán)境被稱為PluginsSDK,讓你通過(guò)執(zhí)行一組預(yù)定義的命令來(lái)開(kāi)發(fā)各類(lèi)型的插對(duì)Apacheant的支持.LIFERAY6.2開(kāi)發(fā)平臺(tái)5[LIFERAY6.2開(kāi)發(fā)平臺(tái)6EclipseLiferayIDE:EclipseIDE[LIFERAY6.2開(kāi)發(fā)平臺(tái)6EclipseLiferayIDE:EclipseIDE非你在執(zhí)行一個(gè)LiferayIDE不支持的高難度操作。為了開(kāi)發(fā)該開(kāi)發(fā)工具是LiferayIDE的擴(kuò)展。Liferay應(yīng)用,如果我傾向Maven該如何如果我喜歡NetBeans,IntelliJ 或其他IDEsEclipseLiferay權(quán)利。事實(shí)上,許多核心的開(kāi)發(fā)者都在使用NetBeans和IntelliJIDEA,這兩款ide是為開(kāi)發(fā)liferay插件而設(shè)計(jì)的,你可以在下面的地址找到更多的PortalPack,OK,liferay概要介紹到這里結(jié)束了,現(xiàn)在讓我們開(kāi)始真正的開(kāi)發(fā)工作第2章Liferay平臺(tái)開(kāi)發(fā)工具IDEIntelliJIdeaNotepad,Emacs等。你可以通過(guò)sqljdbchibernateiBATIS,這樣就可以滿足你的需求了。應(yīng)用PluginsSDKMaven2-1節(jié)Liferayliferay2-1節(jié)Liferayliferayjava程序員,我們都推薦使用LiferayIDE,LiferayIDEPluginsSDKmavenliferay運(yùn)行時(shí)環(huán)境,你Liferaybuilddeploy你的插件到你的liferay實(shí)例。你可以從更新站點(diǎn)像安裝一組Eclipse插件那樣,安裝LiferayIDE.最新版本的LiferayIDEportlets,hooks,Ext插件的開(kāi)發(fā),為了使用liferayIDEindigoj2eeEclipseEclipseLiferayIDE,及如何建立項(xiàng)目,并把項(xiàng)目部署到portal,你將能體會(huì)到使用LiferayIDE開(kāi)發(fā)項(xiàng)目所帶來(lái)的易用性和高效率。我們還會(huì)介紹下Liferay的服務(wù)Builder.它幫助你應(yīng)用Hibernate對(duì)象關(guān)系映射的liferayJava版本,我們接下來(lái)會(huì)演示這個(gè)過(guò)程,基于你是否會(huì)進(jìn)入一個(gè)更新站點(diǎn)獲取Eclipse我們提供兩種方案。預(yù)備工作JAVAJREeclipseJava6.0JREEclipseJunoJavaEE(4.2.x)EclipseIndigoJavaEE(3.7.x)LIFERAY6.2開(kāi)發(fā)平臺(tái)7[LIFERAY6.2開(kāi)發(fā)平臺(tái)8安裝步驟[LIFERAY6.2開(kāi)發(fā)平臺(tái)8安裝步驟EclipseHel-->iallnewIDE/2.0.0GA1/updatesite/按回車(chē)鍵5.LiferayIDE可選安裝EclipseKepler,Juno,IndigoEclipse從/projects/lportal/files/Liferay EclipseHel-->InallNewAddsiteArchiveliferayIDEEclipseLiferayIDE安裝正確HelEclipseLiferayIDE安裝正確Hel-->AEclipseLiferayIDE圖標(biāo)配Liferayliferayportal和測(cè)試你的自定義設(shè)置了。LiferayPluginSDK6.0.5portal版本匹配,同時(shí)也要確保maven被安裝。EclipseIDEliferayIDE擴(kuò)展。liferayPlugin安liferayliferaysdkmaven,liferayportalliferayIDE中進(jìn)行了相關(guān)設(shè)置,這里需要說(shuō)明的是,PluginSDKmavenLiferayIDE在這里只是用最簡(jiǎn)單的方法來(lái)使用PluginSDK:LiferayIDEPluginSDK.1,EclipseInstalledPluginSDKswindows下拉菜單,單擊Preerences-‐>fea-->instaedPluginSdks.ok,sdkLiferayPluginsdksliferayportal運(yùn)行時(shí)和服務(wù)器安裝在 下開(kāi) 對(duì)話框,wndw--Pene--‐>rver- LIFERAY6.2開(kāi)發(fā)平臺(tái)9單擊finish;你應(yīng)該可以看到你的 運(yùn)行在Prfeenc-->rruntimeEnvironments列表里。點(diǎn)擊OK來(lái)保存你的運(yùn)行時(shí)參考。1[LIFERAY6.2開(kāi)發(fā)平臺(tái)測(cè)試liferay服務(wù)器liferayportalEclipseservers下啟動(dòng),你有點(diǎn)擊紅色的stop服務(wù)器按鈕來(lái)停用服務(wù)器(Ctrl+ALT+S)鍵單擊你的liferaytomcatserverOpenLiferayPortalHome.liferayIDEliferay項(xiàng)目,如果你閱讀并按PluginSDKliferayportal服務(wù)LiferayIDELiferayIDE中生成第一個(gè)liferay插件項(xiàng)目吧。生成Liferay項(xiàng)目LiferayPortalliferayLiferay去il-->e--‐LfeayPluginLIFERAY6.2開(kāi)發(fā)平臺(tái)12.1提供項(xiàng)目名字,該名字被命名項(xiàng)目的目錄,同時(shí)提供一個(gè)展示名,展示liferayportalplugin.Demo會(huì)擁有一個(gè)ee2.1提供項(xiàng)目名字,該名字被命名項(xiàng)目的目錄,同時(shí)提供一個(gè)展示名,展示liferayportalplugin.Demo會(huì)擁有一個(gè)een00-‐eworl-‐pott的項(xiàng)目及hielearn007的展示名。選中Antieray--‐uin-‐sdk作為你的build類(lèi)型,如果你需要用2.4sdkliferaytemplate,theme,和ExtServicebuilderportlets,所以請(qǐng)確認(rèn)serviceBuilderportlet被選中。een00-‐erl--‐poteclipsepackage瀏覽器里,PROJECT-docroot/WEB-o1[LIFERAY6.2開(kāi)發(fā)平臺(tái)build.xml-Commonprojectbuild.xml-Commonprojecto-Commonproject無(wú)論什么類(lèi)型的項(xiàng)目,都會(huì)生 文件ifera--‐lun-agepropeisCommonprojectfile進(jìn)行了build.xmlliferayIDEant來(lái)自動(dòng)編譯和部署你的插件,而另外的文件iea--lun-cgepropeis文件則包含了你項(xiàng)目的重要元數(shù)據(jù)。LiferayIDE的屬性視圖會(huì)讓你對(duì)該文件的屬性字段進(jìn)行管理,包括你項(xiàng)目的依賴關(guān)系,部署場(chǎng)景,展示名,及l(fā)iferay版本。如果你把你的項(xiàng)目當(dāng)作一個(gè)應(yīng)用發(fā)liferay應(yīng)用商店liferay--un-cgepropeis文件中的name屬性就會(huì)被當(dāng)作該應(yīng)用的名字,接下來(lái)你需要把你的新插件項(xiàng)目部署到你的liferay服LIFERAY6.2開(kāi)發(fā)平臺(tái)1部署liferay項(xiàng)目到liferay服務(wù)部署liferay項(xiàng)目到liferay服務(wù)你的在服務(wù)器視圖里的liferay運(yùn)行時(shí),另外你也可以使用下面的方法:serversliferay服務(wù)選擇添加和移除點(diǎn)擊Finish.1[LIFERAY6.2開(kāi)發(fā)平臺(tái)新portlet可以被使用的信息。打開(kāi)liferayportal主頁(yè)(http://localhost:8080/新portlet可以被使用的信息。打開(kāi)liferayportal主頁(yè)(http://localhost:8080/)administratorAd--‐MreSample分類(lèi),然后點(diǎn)擊你新的插件,后點(diǎn)擊添加,即可完成讓剛發(fā)布的插件顯示在web頁(yè)面上。目里,在開(kāi)始之前,我們首先修改下項(xiàng)目默認(rèn)生成的portlet項(xiàng)目e:1,打開(kāi)otw-ifa-dp.mLIFERAY6.2開(kāi)發(fā)平臺(tái)1id="elearn007-helloworld"2,打文件刪id="elearn007-helloworld"2,打文件刪3,打開(kāi)docroot/WEB-INF/portlet.xml文件,移除4docroot/view.jsp生成插件成了新的項(xiàng)目een00-helrd 項(xiàng)目,而且你生成了一個(gè)lr00-‐hellowrl--teearn00-‐heloworld演示在已經(jīng)生成的liferay項(xiàng)目里生成插件的通用步驟。在后面的部分,現(xiàn)在讓我們學(xué)習(xí)如何生成地址插件和事件插件在er0-hlwrd項(xiàng)目上。liferayIDEeen00-helrl。因?yàn)樗侵穚ortlet開(kāi)始吧。打開(kāi)tWE-Iiey- 文件,并刪1[LIFERAY6.2開(kāi)發(fā)平臺(tái)1,eear00-‐eo1,eear00-‐eorl--‐pott項(xiàng)目在包瀏覽器,并且選擇ew-->LiferayPortlet.中,包全限定名 com.elearn007.portletdemo,而com.liferay.portal.kernel.portlet.LiferayPortlet或者javax.portlet.GenericPortlet做為你的超類(lèi)。繼承類(lèi)為L(zhǎng)IFERAY6.2開(kāi)發(fā)平臺(tái)13,該窗口為liferayportlet向?qū)?,你將?,該窗口為liferayportlet向?qū)?,你將為你的portlet設(shè)置部署描述。首展示名和標(biāo)題;Elearn007LocationListing。在本窗口你還可以指定portlet定JSp文件的生成路徑。在liferay展示部分,你可以制定分類(lèi),是否添加到控制臺(tái)等,通常該窗1[LIFERAY6.2開(kāi)發(fā)平臺(tái)LIFERAY6.2開(kāi)發(fā)平臺(tái)1的右鍵單擊,并單擊redeploy重新部署即可?,F(xiàn)在你已經(jīng)生成和部署了和elearn007EventLListing的右鍵單擊,并單擊redeploy重新部署即可?,F(xiàn)在你已經(jīng)生成和部署了和elearn007EventLListingportlet,從同一個(gè)項(xiàng)目,而且,locationlistingportlet完成后允許用戶輸入到可用的事件地址中。ServiceBuilder工具是如何幫助你生成你的service 圖形編輯器使ServiceBuilder是一個(gè)模型驅(qū)動(dòng)代碼生成器,讓你定義自己的實(shí)體。ServiceBuilderservice.xml并且自動(dòng)生成你的應(yīng)用模ServiceBuilder?portlets訪問(wèn)共同的數(shù)portal環(huán)境的底層框架。如果你的數(shù)據(jù)用程序代碼中。ServiceBuilderjar文件中,該jar文件屬于一個(gè)插件,但是它可以在所有的portlets中共享。LiferayIDE中,你可以添加碼模式,可以讓你直接手工修改編輯service.xml文件。使用liferayIDE生成你的服務(wù)層非常容易,你需要首先生成2[LIFERAY6.2開(kāi)發(fā)平臺(tái)service.xmlil->ew-service.xmlil->ew-‐f,ServiceBuilder.docrow-nr目錄下生成service.xml文件,并且在總覽模如果你一直按照本手冊(cè)進(jìn)行實(shí)際練習(xí),那么你已經(jīng)有了一個(gè)service.xml文件,因?yàn)槲覀冊(cè)谶M(jìn)行項(xiàng)目建立的時(shí)候,已經(jīng)生成了servicebuilderportlet.將向你演示如何使用servicebuilder來(lái)部署和模塊化我們的service.xml你可以建立服務(wù)。在在哦哦那廣闊模式下瀏覽service.xml,你會(huì)看到在窗口的右角邊有個(gè)按鈕。作d該過(guò)程結(jié)束后,會(huì)在doroot/w-ir目錄下生成一個(gè)新的java讀servicebuilder章節(jié)以徹底了解它的能力?,F(xiàn)在你已經(jīng)知道了從零起步生成項(xiàng)目和plugin了,你了解了servicebuilder的高效率,省時(shí)間,那么現(xiàn)在我們了解下如何導(dǎo)入已經(jīng)存在的項(xiàng)目到LiferayIDE.導(dǎo)入已經(jīng)存在的項(xiàng)目從一個(gè)pluginsdk環(huán)境下PluginsSDKliferay程非常簡(jiǎn)單,不要擔(dān)心如果存在.project或.classpath文件的情況,這個(gè)過(guò)程里L(fēng)IFERAY6.2開(kāi)發(fā)平臺(tái)2LiferayIDE的遠(yuǎn)程服務(wù)適配器LiferayIDE的遠(yuǎn)程服務(wù)適配器IDEliferay應(yīng)用商店下載安裝,rer-maer-wb插件,提供了關(guān)于遠(yuǎn)程操作api.需要下載liferayIDEliferay的下載頁(yè)面或是下載liferaydeveloperstudio從定制門(mén)戶。liferayportalceEEliferayportalceeeportal管理員的登陸認(rèn)證(例如用戶名,用戶密碼)為你的遠(yuǎn)程服務(wù)器;你需要它們來(lái)配置你的鏈接從你的liferayIDE到你的遠(yuǎn)程服務(wù)器。配置遠(yuǎn)程服務(wù)適配器liferayIDEIDEliferay實(shí)例。另外你也可以把它安裝啟動(dòng)liferayIDE2[LIFERAY6.2開(kāi)發(fā)平臺(tái)Fi-->e--‐Ot;選擇服務(wù)器類(lèi)型,單擊Fi-->e--‐Ot;選擇服務(wù)器類(lèi)型,單擊next.在的格式進(jìn)行填寫(xiě)完成后(liferay@ip),點(diǎn)擊Next.過(guò)瀏覽你的liferay安裝目錄并單擊next.HTTP端口號(hào)保留liferayportalcontext路徑和servermanager你的遠(yuǎn)程liferayportal實(shí)例需要遠(yuǎn)程IDE連接程序,否則liferayIDERemoteIDEportalFinish就可以完eclipseJAVA調(diào)試器被自動(dòng)附使用遠(yuǎn)程服務(wù)適配器Addfinish成了一個(gè)build后進(jìn)行,當(dāng)然也可以人工發(fā)布。LIFERAY6.2開(kāi)發(fā)平臺(tái)22-2節(jié)PluginsJAVA程序員可以使用很多的工具和開(kāi)發(fā)環(huán)境,liferay努力不懈的保留工具的相對(duì)獨(dú)立,所以你可以選擇你最滿意的開(kāi)發(fā)工具,如果你不向使用liferayIDE,2-2節(jié)PluginsJAVA程序員可以使用很多的工具和開(kāi)發(fā)環(huán)境,liferay努力不懈的保留工具的相對(duì)獨(dú)立,所以你可以選擇你最滿意的開(kāi)發(fā)工具,如果你不向使用liferayIDE,liferay’spluginsSoftwareDevelopmentKit(SDK),pluginsdkApacheAnt的,可以被任何編輯器使用或是整合到不同的開(kāi)發(fā)環(huán)境中。及可以利用的anttargets并且分享好的應(yīng)用經(jīng)驗(yàn)。tomcat的安裝套件,因?yàn)樗?,快,占用的資源相對(duì)少,盡管你可以使用其他的應(yīng)用服務(wù)器,但是這里我們?nèi)匀徊捎胻omcat.PluginSDKpluginsdkCServiceBuilder運(yùn)行成功。提示:默認(rèn)情況下,liferayportalCE版自帶了很多插件,通常情況下需ly-prta--‐[vrio]/oat--‐cat--‐verion]/webapps刪除除ROOT,markee-‐pott和nn--‐wb外的所有目錄。配從2[LIFERAY6.2開(kāi)發(fā)平臺(tái)ANT_HOMEant安裝路徑,然后把$ANT_HOME/bin路徑添加到你的電腦環(huán)境變量path中。在類(lèi)UNIX(linux,MacOSX)系統(tǒng)上,如果你的ANT_HOMEant安裝路徑,然后把$ANT_HOME/bin路徑添加到你的電腦環(huán)境變量path中。在類(lèi)UNIX(linux,MacOSX)系統(tǒng)上,如果你的ant安裝路徑為ahe--‐ant--<versio并且是Bash,設(shè)置環(huán)境變量可以在.bash_profile中在變量名變量值:{antinstallation單擊OK,并關(guān)閉所有系統(tǒng)屬性窗口。鍵入:antversionPluginsApacheAnt(TM)version<version>compiledLIFERAY6.2開(kāi)發(fā)平臺(tái)2[LIFERAY6.2開(kāi)發(fā)平臺(tái)PluginSDK,liferay的安裝位置,這樣它可以使用liferay的[LIFERAY6.2開(kāi)發(fā)平臺(tái)PluginSDK,liferay的安裝位置,這樣它可以使用liferay的jar包來(lái)編譯插件,并且完成插件部署。SDKperties文件,該文件有缺省配置信息,你可以使用該build.[username].properties與perties在同一文件夾下,這里的liferayportalbundletomcatc:/lfera-‐prt--62下,你會(huì)選定下列行類(lèi)型的,并且你的bundleSDK文件目錄結(jié)構(gòu)在plugins SDK的每個(gè)文件夾里都包含生成一種類(lèi)型插件的腳本,這里是它的ifera-pluns-‐<verson>/--‐PlgnsSDK根目Cnt/-‐‐客戶端應(yīng)用目Dist/-‐‐打包的插件,用于分發(fā)和部署x/-ext插件目錄2app.server.type=[pertiesusesforyourapplicationservertype]app.server.parent.dir=[thedirectorycontainingyourLiferaybundle]app.server.tomcat.dir=[thedirectorycontainingyourapplicationHooks-‐插件目錄Hooks-‐插件目錄Portts-‐pot插件目錄b/-‐插件目錄Bil.reis‐‐默認(rèn)SDK屬性u(píng)i--ol-‐‐通用B--‐comn-‐pgixml-‐‐plugin類(lèi)型引用的屬性targetsi--mn-‐lginxl-‐‐plugintargetsrwiki頁(yè)面。r-‐avadoc--文檔格式,可以參考如下地址的頁(yè)面:liferaysdkportlets./create.shea--heold-‐prt“elearn007windowcreate.bateler--hel--‐prt“elearn007成一個(gè)新的目錄,在這個(gè)目錄下,你就可以實(shí)現(xiàn)你自己的應(yīng)用功能。這里SDKLIFERAY6.2開(kāi)發(fā)平臺(tái)2ant當(dāng)出現(xiàn)buildsuccessful消息就表明portlet現(xiàn)在已經(jīng)部署完成,如果liferay服務(wù)器打印出1portletant當(dāng)出現(xiàn)buildsuccessful消息就表明portlet現(xiàn)在已經(jīng)部署完成,如果liferay服務(wù)器打印出1portletforarn007-‐erl--‐pottisavailableforuse就好的應(yīng)用經(jīng)驗(yàn)用獨(dú)立的pluginsSDK.例如你有個(gè)局域網(wǎng),你可以讓局域網(wǎng)內(nèi)的portlets和下themes在它們自己的pluginsSDK項(xiàng)目。的SDK項(xiàng)目。IDEantJAVA項(xiàng)2-3節(jié)Maven開(kāi)發(fā)使用MavenRepositories理框架,這里是Maven好的特性:2[LIFERAY6.2開(kāi)發(fā)平臺(tái)Maven核心的安裝是輕量級(jí)的,有核心的插件來(lái)進(jìn)行編譯,生成分發(fā)包,另外還有一組非核心插件,讓你具備對(duì)maven擴(kuò)展的能力。許多開(kāi)發(fā)者從antmavenmaven提供了一個(gè)通用的項(xiàng)目Maven核心的安裝是輕量級(jí)的,有核心的插件來(lái)進(jìn)行編譯,生成分發(fā)包,另外還有一組非核心插件,讓你具備對(duì)maven擴(kuò)展的能力。許多開(kāi)發(fā)者從antmavenmaven提供了一個(gè)通用的項(xiàng)目Maven使用一個(gè)項(xiàng)目對(duì)象模型來(lái)描述一個(gè)軟件項(xiàng)目projectobjectmodel(POM),該P(yáng)OM被命名為pom.xml你可以認(rèn)為pom.xml是你整個(gè)依賴關(guān)系。該P(yáng)OMpom.xml文件,激活項(xiàng)目建立過(guò)程,Maven可以做其余的工作,例如下載你項(xiàng)目里指定POMmavenantMavenantmavenartifactsmavenMavenJAVAJAVAmavenLIFERAY6.2開(kāi)發(fā)平臺(tái)2Maven的優(yōu)缺點(diǎn),以決定你管理自己項(xiàng)目的思路,下面是Maven更深度的參考資料:.Liferay提供了mavenMaven的優(yōu)缺點(diǎn),以決定你管理自己項(xiàng)目的思路,下面是Maven更深度的參考資料:.Liferay提供了maven其他更多類(lèi)型的插件。你可以安裝和部署你的你可以到/download.cgi,我們建議你方你的Maven的資源Maven允許你安裝你的組件到你的本地資源庫(kù),同時(shí)也允許你部署你的組件到3[LIFERAY6.2開(kāi)發(fā)平臺(tái)maven管理Maven資maven管理Maven資源liferayGUI來(lái)管理你的資源庫(kù),為了完成上面的工作,你需要NexusOSS.Maven資源庫(kù)管理服務(wù)器,可以生成和管理生產(chǎn)服務(wù)器,快照服務(wù)器性和特新功能的運(yùn)行;快照服務(wù)器則是在某種開(kāi)發(fā)階段的服務(wù)器。如果你對(duì)NexusOSS不感冒,可以跳過(guò)本小節(jié)。打開(kāi)你的WEB瀏覽器,訪 Nexus資源庫(kù)服務(wù)器(例如http://localhost:8081/nexus),并且登陸,adminLIFERAY6.2開(kāi)發(fā)平臺(tái)3RepositoriesandNavigatetod-RepositoriesandNavigatetod->tRepositoryID:liferay-RepositoryName:LiferayReleaseProvider:RepositoryPolicy:????3[LIFERAY6.2開(kāi)發(fā)平臺(tái)配置本地MavenMaven配置本地MavenMaven發(fā)現(xiàn)并訪問(wèn)到資源庫(kù),完成對(duì)資源組件liferayCE/EE資源組件,或者你向分享資源組件。如果你想從核心資源庫(kù)自動(dòng)下載安裝liferayCE資源組件,并且你沒(méi)分享你組件的想法你不需要在你的Maven環(huán)境下配置一個(gè)資源庫(kù)服務(wù)器。Maven下配置一個(gè)鏡像是比較好的應(yīng)用方案,獲取更多關(guān)于鏡像配為了配置你的maven環(huán)境,以訪問(wèn)你的liferay-releases打開(kāi)你的settings.xml文件,沒(méi)有,就創(chuàng)建新的。<?xml<id>liferay-<id>liferay-LIFERAY6.2開(kāi)發(fā)平臺(tái)3liferay現(xiàn)在讓我們安裝你需要的liferay組件,這些組件幫助你生成liferay安裝需要的liferayliferay現(xiàn)在讓我們安裝你需要的liferay組件,這些組件幫助你生成liferay安裝需要的liferayliferaymavenliferayEE還是為zip文件liferayEEliferayCEZIPliferay/projects/lportal/files/Liferay該ZIP文件除了包含artifacts外還包含一個(gè)完成安裝和部署的腳本文件。liferayceliferayce代碼庫(kù)里得到非發(fā)行版的從源碼建立CEMavenliferaycemavenartifacts那么從源碼建立它們即可,切換到你的本地liferayportalce源代碼項(xiàng)目,如果你還沒(méi)有請(qǐng)?jiān)L問(wèn)生成文件在你的本地3[LIFERAY6.2開(kāi)發(fā)平臺(tái)liferayceGPG,gpg–gen–keygpgkey.pgpkey,liferayceGPG,gpg–gen–keygpgkey.pgpkey,你可以通過(guò)運(yùn)行g(shù)pg–list–keys找到你的gpgkeyname.注意:release.[username].properties不是必須的,如果你僅僅計(jì)劃本地安裝你的artifacts而不部署它們。liferayliferayportalWAR文件,ant-fbuild-dist.xmlallzip-portal-ant-fbuild-maven.xmldeploy-ant-fbuild-maven.xmlinstall-artifacts.m2javadoc.jar文件的時(shí)候,你的機(jī)器可能會(huì)出現(xiàn)問(wèn)maxmemory跳過(guò)該過(guò) 件,搜<!--<antcalltarget="jar-javadoc"/>--gpg.keyname=[GPGkeyname]gpg.passphrase=[GPGpassphrase]LIFERAY6.2開(kāi)發(fā)平臺(tái)3[LIFERAY6.2開(kāi)發(fā)平臺(tái)安裝artifacts到一個(gè)資源庫(kù)[LIFERAY6.2開(kāi)發(fā)平臺(tái)安裝artifacts到一個(gè)資源庫(kù)1,liferayartifactszipliferay-portal-mavenartifacts的本 代碼項(xiàng)目根目錄,例如${user_home}/.m2/repositoryartifacts你需要部署它們到發(fā)行版資源庫(kù)服artifacts到一個(gè)資源庫(kù)1,liferay-releaseliferaymaven2,確保將容納你liferayartifactssettings.xml文件中被指定為服務(wù)器,liferay-portal-maven-[version],如果是你自己建立的,它們將在時(shí)間戳格式的目錄中在你的liferay–portal資源庫(kù)目錄下。4,build.[username].properties文件,這是一個(gè)新的屬性文件,為lp.maven.repository.id和lp.maven.repository.url指定屬性值,這指向你的資源庫(kù)ID和URL地址,類(lèi)似下面的例子:3NexossliferayRepository你第一次使用Maven編譯你的liferay插件的時(shí)候maven為了可以從liferayMavenrepository訪問(wèn)artifacts,你需要配置maven來(lái)搜索它們。首先你需要項(xiàng)目的父pom.xml配置liferay資源庫(kù)的證書(shū):<id>liferay-<name>Liferay<id>liferay-<url>/nexus/content/groups/liferay-下面,你需要與liferay資源庫(kù)交互,需要使用特定的命令來(lái)訪問(wèn)它例如:mvnarchetype:generateDarchetypeCatalog=https://repositLIFERAY6.2開(kāi)發(fā)平臺(tái)3從核心資源庫(kù)安裝liferay’s6.2.0-RC5發(fā)行版及之前的版本,最新的版本請(qǐng)從liferay自己的資源庫(kù)下載并安裝。Liferay從核心資源庫(kù)安裝liferay’s6.2.0-RC5發(fā)行版及之前的版本,最新的版本請(qǐng)從liferay自己的資源庫(kù)下載并安裝。Liferay提供了locatedatmavenliferaymaven自動(dòng)下載需要的artifacts從核心庫(kù),如果在你的本地資源庫(kù)沒(méi)有發(fā)現(xiàn)資源或你設(shè)置的任何其他的集合LerayIDeclipsemavenm2e-liferay插件,這些依賴包就默認(rèn)被安裝了,在開(kāi)始之前,我們理解下這些插件是如何給我們IDE/Maven支持的。M2e-coreMavenEclipse解決方案和一個(gè)抽象的項(xiàng)目配置框架針對(duì)適配器。當(dāng)然為了讓liferayMaven項(xiàng)目被識(shí)別為靈活的WEB項(xiàng)目,Maven項(xiàng)目也必須被映射到一個(gè)web項(xiàng)目。M2e-wtpMavenweb之間,在整合方面只有最后的需要就是確保m2e-core插件可以識(shí)別額外的liferay元數(shù)據(jù)映射需求,以支持liferay自定義目標(biāo)。MavenEclipse都有它們自己的標(biāo)準(zhǔn)在建立項(xiàng)目生命周期上,都保持各自LiferayIDEliferay周m2e-liferayliferaycyleeclipse建立周期被自你的項(xiàng)目選擇Properties->Maven->LifecycleMapping.liferayIDEmaven插件,如果你在安裝階段放棄了安裝maven插件,那么現(xiàn)在請(qǐng)點(diǎn)擊Help->installnewsoftware在workwith文本框,輸入:LiferayIDErepository-如果3[LIFERAY6.2開(kāi)發(fā)平臺(tái)配置你liferaymaven項(xiàng)目配置你liferaymaven項(xiàng)目mavenliferay包括portlets,theme,hook和layouttemplateplugins。Archetypemaven的項(xiàng)目模板工具,讓我們使用它生成liferayportlet項(xiàng)目viexportPATH=$PATH:/new/dir/location1source$HOME/.bash_profile看下如何使用LiferayIDE來(lái)生成liferaypluginsLIFERAY6.2開(kāi)發(fā)平臺(tái)3liferay中會(huì)自動(dòng)顯示項(xiàng)目類(lèi)型,而且需要liferay中會(huì)自動(dòng)顯示項(xiàng)目類(lèi)型,而且需要4,設(shè)定artifact的版本和組編號(hào),例如這里我們使用1.0-snapshot5,設(shè)定你向讓plugin項(xiàng)目使用的活動(dòng)配置,如果你不記得你的活動(dòng)配置或是沒(méi)ID配置你的liferaymaven項(xiàng)目部分介紹。liferayliferay運(yùn)行時(shí),新的活動(dòng)id和liferay版本號(hào)。針對(duì)心的活動(dòng)配置位置你可以懸在在4[LIFERAY6.2開(kāi)發(fā)平臺(tái)于運(yùn)行時(shí)的情況下,liferayIDE自動(dòng)設(shè)置需要的屬性,并且沒(méi)有多余的活動(dòng)于運(yùn)行時(shí)的情況下,liferayIDE自動(dòng)設(shè)置需要的屬性,并且沒(méi)有多余的活動(dòng)在命令行下maven項(xiàng)目mvnarchetype:generate-LIFERAY6.2開(kāi)發(fā)平臺(tái)4上可用,因此你必須使用-DarchetypeCatalog=…部分來(lái)參考從中心庫(kù)安裝ceArtifacts,來(lái)配置maven訪問(wèn)liferay資源庫(kù)。Archetypearchetype讓你選擇,你可以通tifactID的方式來(lái)過(guò)濾archetypes,這個(gè)階段,命令行輸出類(lèi)似下面4[LIFERAY6.2開(kāi)發(fā)平臺(tái)果你指定了一個(gè)指向你nexus的公開(kāi)資源庫(kù),該插件也安裝到那里。oy.dir屬性。archetype生成的話會(huì)自帶一個(gè)pom和mavenliferay插件,你的插件會(huì)使用,請(qǐng)參考使用父插件項(xiàng)目為描述liferay屬性的章LIFERAY6.2開(kāi)發(fā)平臺(tái)4開(kāi)發(fā)平臺(tái)開(kāi)發(fā)平臺(tái)通過(guò)鍵入mvnpackage對(duì)插件進(jìn)行打包mvnliferay:deploypom.xml(可以是插件目錄也可以是父目錄)里添加如下部署配置4<name>LiferaySnapshots署到發(fā)行版資源庫(kù),那么在pom.xml版本部分就應(yīng)該是:<version>1.0</version>而不再是<version>1.0-mvn署到發(fā)行版資源庫(kù),那么在pom.xml版本部分就應(yīng)該是:<version>1.0</version>而不再是<version>1.0-mvndeployNexus2-4 可以使用maven開(kāi)發(fā)的liferay插件類(lèi)Mavenplugintypes:portlets,themes,layoutportletliferayportletliferayPlugins你可以在groupIDliferay上乖哦率或者使用groupID/artifactID組合liferay:portlet來(lái)進(jìn)行過(guò)濾,以更容易發(fā)現(xiàn)liferayportletarchetypescom.liferay.maven.archetypes:liferay-portlet-archetypeLIFERAY6.2開(kāi)發(fā)平臺(tái)4[LIFERAY6.2開(kāi)發(fā)平臺(tái)java代碼文件,而weba[LIFERAY6.2開(kāi)發(fā)平臺(tái)java代碼文件,而webaMaven項(xiàng)目目錄類(lèi)JavasourceWebPluginsSDK項(xiàng)目docroot/WEB-portlettheme-projectsample-liferaytheme插件項(xiàng)目,只需參考前面相關(guān)章節(jié),在插件類(lèi)型選擇上確保選擇theme為插件類(lèi)型。ArchetypethemegroupIDgroupID/artifactID來(lái)進(jìn)行過(guò)濾例如:liferayliferay:them目錄結(jié)構(gòu):MavenPluginsSDK4liferay.theme.parent:設(shè)置父主題,你可以定義任意WARartifact定liferay.theme.parent:設(shè)置父主題,你可以定義任意WARartifact定_unstyled,_styled,classic,或control_panel來(lái)使用核心主題。發(fā)布theme項(xiàng)目packagewarmavenWAR類(lèi)型的項(xiàng)目,同時(shí)上級(jí)主題被下載并復(fù)制,而你自定義的部分target目錄,它第3portlet應(yīng)用liferayportlet的項(xiàng)目了,但是我們沒(méi)有真正的在項(xiàng)目里放置任何的portlet,所以我們計(jì)劃實(shí)現(xiàn)一個(gè)業(yè)務(wù)功能使用liferayliferayplugin生成一個(gè)簡(jiǎn)單的portlet,它允許我們自定義歡迎信息保存到portlet的設(shè)置中,然后我們?cè)诟奖阕R(shí)別和記憶,最后是portlet的國(guó)際化的話題。事實(shí)上你可以使用你想用的任何框架來(lái)開(kāi)發(fā)你 portlet,包struts,SpringMVC,JSFVaadin.這里我們使用liferayMVCPortletLIFERAY6.2開(kāi)發(fā)平臺(tái)4織機(jī)構(gòu)管理,頁(yè)面建立,和內(nèi)容管理等Ruby,PHP開(kāi)發(fā)的應(yīng)用仍然可以portletliferayportal上,并且可以很好的運(yùn)行,這方面的織機(jī)構(gòu)管理,頁(yè)面建立,和內(nèi)容管理等Ruby,PHP開(kāi)發(fā)的應(yīng)用仍然可以portletliferayportal上,并且可以很好的運(yùn)行,這方面的分析portlet項(xiàng)目開(kāi)發(fā)多Actions的Portlet3-1節(jié)生成一個(gè)Portlet項(xiàng)目PluginSDKportletsportletportlet起個(gè)沒(méi)有空格的名發(fā)這里的portlet.IDE環(huán)境下開(kāi)去il-‐>Ne-->Liferay填寫(xiě)項(xiàng)目名eearn00-‐en--‐pot和展示名elearn007UseDefaultlocationcheckbox保持選擇狀態(tài),默認(rèn)情況下,默認(rèn)位置4[LIFERAY6.2開(kāi)發(fā)平臺(tái)單擊下一步使用終端1linuxMacOS./create.shy-geeig“My windowscreate.batm--geeting“Mybuildsuccessfulantportlets目錄下新生portlet項(xiàng)目。在這里你將實(shí)現(xiàn)你的功能。注意PuginsSDK自動(dòng)添加”--”到你的項(xiàng)目名當(dāng)創(chuàng)建該目錄的時(shí)PluginsSDKportlet項(xiàng)目,你可portletIDE,在那里管理你的新項(xiàng)目。如果你這jarjarliferay安裝目錄,否則你會(huì)得到編譯錯(cuò)誤。因?yàn)閍nt腳本自動(dòng)為你做了上面的工portletb-common.xl文件里的classpath,你plugin.classpathportal.classpathjar文件就是你的項(xiàng)目在pluginsSDK.LIFERAY6.2開(kāi)發(fā)平臺(tái)4部署項(xiàng)目用的消息,而在終端下,你只需要鍵入antdeploy.portlet3-2節(jié)部署項(xiàng)目用的消息,而在終端下,你只需要鍵入antdeploy.portlet3-2節(jié)分析一個(gè)Portlet項(xiàng)目opre-///Lifera--sl portletMVCPortlet框架,該框架輕量級(jí),隱藏了復(fù)雜的實(shí)portletsMVCPortlet項(xiàng)目使JSPsportletportlet模式都有一個(gè)相5[LIFERAY6.2開(kāi)發(fā)平臺(tái)JAVAdocroE--‐I/rcJAVAdocroE--‐I/rcdocrot/W--INFportlet.xmlliferay規(guī)范約定Lifera--‐disxm-‐‐描述了portlet出現(xiàn)在添加菜單的類(lèi)配置portalAccesscontrollist(PACL)屬性,jar包依賴及更多配置項(xiàng)目。ifera-‐prtetxl-‐‐針對(duì)S--‐286的優(yōu)化擴(kuò)展,例如你可以設(shè)置當(dāng)前應(yīng)用的客戶端文件主要是.jsp,.css和.jsportlet這些文件都應(yīng)該放置在docroot目錄;.jsp文件可以放置在根目錄,而.css和.js的部分HTML文檔,CSS類(lèi)的名字空間和元素的ID需要避免沖突與另外的portlets.liferayAPI方法,可以為你生成名字空間,在使用portlet名字空間部分會(huì)有更多這方面的介紹。進(jìn)一步了解elearn007Greeting如果你是portlet開(kāi)發(fā)的新手,該部分將提高你對(duì)portlet配置選項(xiàng)的理解PluginsSDK,portletdocro-‐Nretxl,pot--‐ae:包含了portleta:Port--cl:全限定類(lèi)名處portletportalportletnit--‐paramname/valueportletiri--‐c過(guò)期緩沖,- Supports:包含了所支持的e--te并且表明portlet模式所支持的特定portletportlet規(guī)范里被定義的,模式供通用的方法來(lái)在它們之間切換(portlet添加到頁(yè)面portlets的通用操作非常有用。最常用的場(chǎng)合是生portlet.portlets都必須支持view模式。Port--info:可以被portlet標(biāo)題欄和portal的類(lèi)別描述引用,S--286LIFERAY6.2開(kāi)發(fā)平臺(tái)5[LIFERAY6.2開(kāi)發(fā)平臺(tái)了一些資源元素可以用于這些目的:t[LIFERAY6.2開(kāi)發(fā)平臺(tái)了一些資源元素可以用于這些目的:ttlt-epot--直接包含資源元素,或者把它們放到資源包里。你可以在portlet.xmlpo--n片段來(lái)指定信息,這是最簡(jiǎn)單的方法,例如另外你可以指定相同的信息為資源在資源包文件里,例如你可以生成docroE--docroE--‐IN/ccotentlanguage_pertieslanguage_perties.5#DefaultResourceBundle#filename:#PortletInforesourcebundleexamplejavax.portlet.title=WeatherPortlet<title>Weather如果你正轉(zhuǎn)化為maven格式的項(xiàng)目,要確保把content的目錄拷貝到src/maiea/如果你正轉(zhuǎn)化為maven格式的項(xiàng)目,要確保把content的目錄拷貝到src/maiea/eb--inf/classes目錄ecuity--ro--‐ref:rol--‐eDcroot/WE--‐I/lifeay--:除了標(biāo)準(zhǔn)的portlet.xml設(shè)置屬性之外,liferay規(guī)范提升了安裝到liferayportal服務(wù)器上JAVA標(biāo)準(zhǔn)的portlets,默認(rèn)情況下PluginsSDk會(huì)設(shè)置如下的配置信息:Port--‐ae:portletportlet.xml里的設(shè)置一3-3 編寫(xiě)入門(mén)級(jí)MyGreeting個(gè)回退到view.jsp的超級(jí)鏈接。單獨(dú)的JAVA類(lèi)。首先我們不希望在同樣的頁(yè)面上出現(xiàn)多個(gè)歡迎信息,因此讓我們讓我們的elearn007greeting為非實(shí)例化。因此只需要編輯fa--‐rtetxl文件即可,instanceablefalse即可,如果LIFERAY6.2開(kāi)發(fā)平臺(tái)5[LIFERAY6.2開(kāi)發(fā)平臺(tái)jspview.jspdocroot目錄下,用下面的內(nèi)容替換它:[LIFERAY6.2開(kāi)發(fā)平臺(tái)jspview.jspdocroot目錄下,用下面的內(nèi)容替換它:5<%@tagliburi="/portlet_2_0"prefix="portlet"%><%@tagliburi="/tld/aui"prefix="aui"<%@pageimport="javax.portlet.PortletPreferences"<portlet:defineObjectsPortletPreferencesprefs=renderRequest.getPreferences();Stringgreeting=renderRequest.getParameter("greeting");if(greeting!=null){<%@tagliburi="/portlet_2_0"prefix="portlet"%><%@pageimport="javax.portlet.PortletPreferences"PortletPreferencesprefs=renderRequest.getPreferences();Stringgreeting=(String)prefs.getValue("greeting","Hello!Welcometoour<p><%=greeting<portlet:renderURL<portlet:paramname="mvcPath"value="/edit.jsp"<p><ahref="<%=editGreetingURL%>">EditportletIDE或者命令行下:portletIDE或者命令行下:ant這里有不少重要的細(xì)節(jié)需要注意,首先在超鏈接生成部分,使用了<portlet:renderURL>/portlet_2_0標(biāo)簽庫(kù)中jsprequest請(qǐng)求。一定注意,要用標(biāo)簽庫(kù)來(lái)生成鏈接,因?yàn)閜ortlet并沒(méi)有擁有整個(gè)WEB頁(yè)面,相反僅僅是一部分頁(yè)面。edit.jspauiAlloyUIHTML或是其prefs.setValue("greeting",greeting);<p>Greetingsaved}greeting="greeting","Hello!Welcometoour<portlet:renderURL<portlet:paramname="mvcPath"value="/edit.jsp"<aui:formaction="<%=editGreetingURL%>"<aui:inputlabel="greeting"name="greeting"type="text"greeting%>"<aui:buttontype="submit"<portlet:renderURL<portlet:paramname="mvcPath"value="/view.jsp"<p><ahref="<%=viewGreetingURL%>">←LIFERAY6.2開(kāi)發(fā)平臺(tái)5jsp標(biāo)簽庫(kù)你也會(huì)注意到<portlet:defineObjects/>JSP里插入一組隱含的變量,這些變量對(duì)開(kāi)發(fā)很重要,包括:renderRequest,portletConfig,portletPreferences,S--8方案定義了四個(gè)生命周期方法:processAction,processEvent,render,serveResource.jsp標(biāo)簽庫(kù)你也會(huì)注意到<portlet:defineObjects/>JSP里插入一組隱含的變量,這些變量對(duì)開(kāi)發(fā)很重要,包括:renderRequest,portletConfig,portletPreferences,S--8方案定義了四個(gè)生命周期方法:processAction,processEvent,render,serveResource.JSPportletJSP可用net-‐‐portletrender請(qǐng)求階seRqes‐‐代表資源,在JSP處在資源服務(wù)階段可用。-‐‐action的portlet上,vtet‐‐事件請(qǐng)求對(duì)esouceespnsrPrMap<String,Object>portletSessionScope:Poretefeee-‐‐表示portlet的偏好設(shè)置portletPreferencesValue:3-4 理解Portlet兩段式執(zhí)portlet或者Ruby,下面讓我們討論兩階段的好處:我們的portlet沒(méi)有擁有整個(gè)HTMLportletportlet的處理方法,則頁(yè)面上的所有portlet都會(huì)重新繪制,但是portalportlet都重復(fù)上次的更新,行結(jié)算,完成了該操作后,portalportlet按照它的缺省視5[LIFERAY6.2開(kāi)發(fā)平臺(tái)接下來(lái),用戶會(huì)點(diǎn)擊在檢索portlet中的商品鏈接,這會(huì)初始化一個(gè)request/responseportlet的內(nèi)容更新。但是在這個(gè)新的循環(huán)周期中,以前的購(gòu)物參數(shù)都還保存著,因?yàn)閜ortal必須顯示購(gòu)物portlet的內(nèi)容,它需要重復(fù)上次的處理,而這會(huì)引起新的支付操作,并接下來(lái),用戶會(huì)點(diǎn)擊在檢索portlet中的商品鏈接,這會(huì)初始化一個(gè)request/responseportlet的內(nèi)容更新。但是在這個(gè)新的循環(huán)周期中,以前的購(gòu)物參數(shù)都還保存著,因?yàn)閜ortal必須顯示購(gòu)物portlet的內(nèi)容,它需要重復(fù)上次的處理,而這會(huì)引起新的支付操作,并為什么會(huì)發(fā)生這樣的沖突,因?yàn)閜ortal在運(yùn)行時(shí)無(wú)法知道用戶添加了哪個(gè)URLURL頁(yè)面portlet到一個(gè)頁(yè)面,portal必須從一個(gè)再繪制portlet分離出處理過(guò)程。portlet的上次操作是否是一次后臺(tái)處理。它沒(méi)有其他選擇,除了重復(fù)上次操作來(lái)得到portlet內(nèi)容。后臺(tái)處理階段:該階段只能被portlet喚醒一次,是用戶與portlet交互的結(jié)果,該階段,portlet可以修改它的狀態(tài),例如可以更改用戶的偏好設(shè)置,醒,但是喚醒的次序在標(biāo)準(zhǔn)portal規(guī)范中并沒(méi)有做出明確的規(guī)定,liferayportal對(duì)此做了完善,通過(guò)y-‐‐rtxmlrenwgt屬性。packageimportimportjavax.portlet.ActionRequest;importjavax.portlet.ActionResponse;importjavax.portlet.PortletException;importjavax.portlet.PortletPreferences;importpublicclassMyGreetingPortletextends{publicvoidLIFERAY6.2開(kāi)發(fā)平臺(tái)5[LIFERAY6.2開(kāi)發(fā)平臺(tái)[LIFERAY6.2開(kāi)發(fā)平臺(tái)理階段,有三種URL,可以通過(guò)如下的方式生成:5<%@tagliburi="/portlet_2_0"prefix="portlet"%><%@tagliburi="/tld/aui"prefix="aui"<%@pageimport="com.liferay.portal.kernel.util.ParamUtil"<%@pageimport="com.liferay.portal.kernel.util.Validator"<%@pageimport="javax.portlet.PortletPreferences"<display-name>MyGreeting</display-ActionRequestactionRequest,ActionResponsethrowsIOException,{PortletPreferencesprefs=Stringgreeting=if(greeting!={prefs.setValue("greeting",greeting);prefs.store();}cessAction(actionRequest,}}3-3-5節(jié)在Action階段和Render階段傳送信息有兩種方法來(lái)從后臺(tái)處理階段到展示階段傳遞消息。第一種方法是通過(guò)renderprocessActionsetRenderParamter方法,添加一個(gè)新<portlet:defineObjectsPortletPreferencesprefs=renderRequest.getPreferences();Stringgreeting=(String)prefs.getValue("greeting","Hello!Welcometoour<portlet:actionURL<portlet:paramname="mvcPath"value="/edit.jsp"<aui:formaction="<%=editGreetingURL%>"<aui:inputlabel="greeting"name="greeting"type="text"greeting%>"<aui:buttontype="submit"<portlet:renderURL<portlet:paramname="mvcPath"value="/view.jsp"<p><ahref="<%=viewGreetingURL%>">←LIFERAY6.2開(kāi)發(fā)平臺(tái)5[LIFERAY6.2開(kāi)發(fā)平臺(tái)URLURL上的參數(shù)從活動(dòng)階段僅[LIFERAY6.2開(kāi)發(fā)平臺(tái)URLURL上的參數(shù)從活動(dòng)階段僅actionRequestsetRenderParameterrenderini--‐pamURL,那么繪制參數(shù)也同時(shí)被設(shè)置了,所以當(dāng)我們保存后的成功消息會(huì)一直顯示,直到我們的portlet的調(diào)portlets,session的應(yīng)用,你的actionRequestJSP中獲取,liferay提供了幫助類(lèi)和標(biāo)簽來(lái)完成這樣的操作,在processAction方法,你需要使用SessionMessages類(lèi)。6publicclassMyGreetingPortletextends{publicvoidActionRequestactionRequest,ActionResponsethrowsIOException,{PortletPreferencesprefs=Stringgreeting=if(greeting!={prefs.setValue("greeting",greeting);}<iit-->我們添加我們添加portlet,你回到編輯界面,編輯并保存歡迎信息,etry<liferay-ui:errorkey="error"message="Sorry,anerrorpreventedsavingyourgreeting"<%@tagliburi="/portlet_2_0"prefix="portlet"%><%@tagliburi="/tld/ui"prefix="liferay-ui"<%@pageimport="javax.portlet.PortletPreferences"<portlet:defineObjects<liferay-ui:successkey="success"message="Greetingsaved<%PortletPreferencesprefs=greeting="greeting","Hello!Welcometoourportal.");<p><%=greeting<portlet:renderURL<portlet:paramname="mvcPath"value="/edit.jsp"<p><ahref="<%=editGreetingURL%>">Edit}}LIFERAY6.2開(kāi)發(fā)平臺(tái)6[LIFERAY6.2開(kāi)發(fā)平臺(tái)Portlet名字空間名字空間可以確保給定的portlet名字在發(fā)回portal的請(qǐng)求參數(shù)保持唯一性。[LIFERAY6.2開(kāi)發(fā)平臺(tái)Portlet名字空間名字空間可以確保給定的portlet名字在發(fā)回portal的請(qǐng)求參數(shù)保持唯一性。用<portlet:namespace/>標(biāo)簽就可以為你的portlet產(chǎn)生一個(gè)唯一的數(shù)值。ABportlet.fm的表單。如果沒(méi)有名字分別就可以用_Afm和_Bfm來(lái)進(jìn)行區(qū)分了。默認(rèn)下,liferayportlets,portlets發(fā)送了沒(méi)名字空間的參數(shù),因此liferay讓你可以選擇是否關(guān)閉無(wú)名字空間的參通過(guò)在fea--‐rtetxl文件,輸入:除此你還需要設(shè)置reqr-‐naesaed--‐araetr>false針對(duì)第三方3-6節(jié)開(kāi)發(fā)Action階段renderURLmvcPath參數(shù)來(lái)指你可以按你所需擁有多個(gè)活動(dòng)處理,實(shí)現(xiàn)它們的方法,都接收兩個(gè)參數(shù):6submitForm(document.<portlet:namespace}catch(Exception{SessionErrors.add(actionRequest,}ActionRequestActionResponse.方法名可以自定義,但是方法的名字必須與JSP頁(yè)面上URL的名字一樣。ActionRequestActionResponse.方法名可以自定義,但是方法的名字必須與JSP頁(yè)面上URL的名字一樣。edit.jspactionURL,<portlet:paramname="mvcPath"value="/edit.jsp"publicclassMyGreetingPortletextends{publicvoidActionRequestactionRequest,ActionResponsethrowsIOException,{PortletPreferencesprefs=Stringgreeting=if(greeting!={try}catch(Exception{SessionErrors.add(actionRequest,}}}publicvoidActionRequestactionRequest,ActionResponsethrowsIOException,PortletException//Addcodeheretosendan}}LIFERAY6.2開(kāi)發(fā)平臺(tái)6[LIFERAY6.2開(kāi)發(fā)平臺(tái)現(xiàn)在你知道了portlet開(kāi)發(fā)的基礎(chǔ)知識(shí),你可以使用你的JAVA技術(shù)來(lái)開(kāi)發(fā)3-[LIFERAY6.2開(kāi)發(fā)平臺(tái)現(xiàn)在你知道了portlet開(kāi)發(fā)的基礎(chǔ)知識(shí),你可以使用你的JAVA技術(shù)來(lái)開(kāi)發(fā)3-7 實(shí)用友好型portletURL地址URLURL從liferay6開(kāi)始,我們可以改變哪些復(fù)雜的URL地址成為簡(jiǎn)潔容易記憶的URL地它會(huì)去掉不需要的參數(shù)從URL上,為了添加該特性,首先需要編輯iea--文件,并且添加如下行在</icon>和<instanceable>之間下面,生成文件(移除換行標(biāo)記6<?xml3-8節(jié)Portlet國(guó)際化如果你的目標(biāo)是生成國(guó)際化的portlet,你需要生成語(yǔ)言屬性文件,也被成為資3-8節(jié)Portlet國(guó)際化如果你的目標(biāo)是生成國(guó)際化的portlet,你需要生成語(yǔ)言屬性文件,也被成為資portal內(nèi)建的已經(jīng)被翻譯過(guò)的消息都可以被portlet項(xiàng)目訪問(wèn)到。portletportal的內(nèi)建消息列表中?你的plugin是否包含多個(gè)portlet?portletsportlet生成獨(dú)立的消portletsliferay的語(yǔ)言建立能力從liferayIDE或是pluginsSDK.liferay的語(yǔ)言關(guān)管理語(yǔ)言關(guān)鍵字的文件是perties,你可以在pot--im.r的contentprta-imsrc/cnetliferay的你可以使用<iea-‐i:eage標(biāo)簽來(lái)使用一個(gè)語(yǔ)言關(guān)鍵perties的關(guān)鍵字,例如你想用他們的語(yǔ)言來(lái)歡迎用戶,可以指定welcome關(guān)鍵字:<liferay-ui:messagekey="welcome"<liferay-ui:messagekey="message-key"LIFERAY6.2開(kāi)發(fā)平臺(tái)6[LIFERAY6.2開(kāi)發(fā)平臺(tái)[LIFERAY6.2開(kāi)發(fā)平臺(tái)庫(kù)在你的JSP文件里:<liea-‐i:eage/>標(biāo)簽也支持字符串參數(shù)傳送到一個(gè)語(yǔ)言關(guān)鍵字,例如om--‐x關(guān)鍵字會(huì)接收一個(gè)參數(shù),這里是om--‐x關(guān)鍵字

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論