版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.:.;EAS門戶Portlet制造指南闡明本指南主要引見EAS門戶Portlet的制造過程。簡要論述了EAS門戶的新特性,詳細(xì)引見了制造Portlet的過程和步驟,對制造Portlet過程遇到的常見問題進(jìn)展了闡明。本指南適用于EAS門戶Portlet開發(fā)人員。目錄 TOC o 1-3 h z u HYPERLINK l _Toc277854754 闡明 PAGEREF _Toc277854754 h 2 HYPERLINK l _Toc277854755 目錄 PAGEREF _Toc277854755 h 3 HYPERLINK l _Toc277854756 第1章 EAS門戶簡介 PA
2、GEREF _Toc277854756 h 4 HYPERLINK l _Toc277854757 1.1 EAS門戶新特性 PAGEREF _Toc277854757 h 4 HYPERLINK l _Toc277854758 第2章 Portlet制造 PAGEREF _Toc277854758 h 5 HYPERLINK l _Toc277854759 2.1 Portlet制造步驟 PAGEREF _Toc277854759 h 5 HYPERLINK l _Toc277854760 2.2 配置Portlet信息 PAGEREF _Toc277854760 h 5 HYPERLINK
3、 l _Toc277854761 2.2.1 配置Portlet定義信息 PAGEREF _Toc277854761 h 5 HYPERLINK l _Toc277854762 2.2.2 配置Portlet業(yè)務(wù)處置信息 PAGEREF _Toc277854762 h 6 HYPERLINK l _Toc277854763 2.3 向數(shù)據(jù)庫插入相關(guān)數(shù)據(jù) PAGEREF _Toc277854763 h 6 HYPERLINK l _Toc277854764 2.4 Portlet配置信息與數(shù)據(jù)庫數(shù)據(jù)的對應(yīng)關(guān)系 PAGEREF _Toc277854764 h 8 HYPERLINK l _Toc2
4、77854765 2.5 制造Portlet內(nèi)容頁面,實(shí)現(xiàn)業(yè)務(wù)需求 PAGEREF _Toc277854765 h 9 HYPERLINK l _Toc277854766 2.5.1 Portlet內(nèi)容頁面JSP接口 PAGEREF _Toc277854766 h 10 HYPERLINK l _Toc277854767 2.5.2 Portlet內(nèi)容頁面JS接口 PAGEREF _Toc277854767 h 13 HYPERLINK l _Toc277854768 2.5.3 Portlet內(nèi)容頁面制造規(guī)范與約束 PAGEREF _Toc277854768 h 16 HYPERLINK l
5、 _Toc277854769 2.5.4 Portlet內(nèi)容頁面制造常見問題 PAGEREF _Toc277854769 h 19 HYPERLINK l _Toc277854770 2.5.5 Portlet內(nèi)容頁面HTC控件的交換 PAGEREF _Toc277854770 h 23 HYPERLINK l _Toc277854771 2.5.6 門戶優(yōu)化合并且刪除了部分js PAGEREF _Toc277854771 h 25 HYPERLINK l _Toc277854772 第3章 Portlet業(yè)務(wù)設(shè)置 PAGEREF _Toc277854772 h 27 HYPERLINK l
6、_Toc277854773 3.1 關(guān)聯(lián)Portlet業(yè)務(wù)設(shè)置頁面 PAGEREF _Toc277854773 h 28 HYPERLINK l _Toc277854774 3.2 Portlet業(yè)務(wù)設(shè)置頁面JSP接口 PAGEREF _Toc277854774 h 29 HYPERLINK l _Toc277854775 3.3 Portlet業(yè)務(wù)設(shè)置頁面JS接口 PAGEREF _Toc277854775 h 30 HYPERLINK l _Toc277854776 第4章 Portlet的運(yùn)用 PAGEREF _Toc277854776 h 32 HYPERLINK l _Toc2778
7、54777 第5章 Portlet相關(guān)SQL腳本的導(dǎo)出和提交 PAGEREF _Toc277854777 h 35 HYPERLINK l _Toc277854778 5.1 例如SQL PAGEREF _Toc277854778 h 35 HYPERLINK l _Toc277854779 5.2 腳本提交位置 PAGEREF _Toc277854779 h 36 HYPERLINK l _Toc277854780 附錄1 Portal配置文件拆分闡明 PAGEREF _Toc277854780 h 38 HYPERLINK l _Toc277854781 附錄2 PortletUtil A
8、PI PAGEREF _Toc277854781 h 42 HYPERLINK l _Toc277854782 附錄3 Ajax之Buffalo開發(fā)指南 PAGEREF _Toc277854782 h 54 HYPERLINK l _Toc277854783 附錄4門戶Portlet之間通訊 PAGEREF _Toc277854783 h 59第1章 EAS門戶簡介1.1 EAS門戶新特性新的EAS門戶在上一版本門戶的根底上對整體框架進(jìn)展了優(yōu)化,實(shí)現(xiàn)了相關(guān)新特性,包含如下功能:1自定義規(guī)劃:可自在規(guī)劃,跨列規(guī)劃;2頁簽配置完善:以拖拽方式把Portlet配置到頁簽上;3展現(xiàn)框架調(diào)整:可自在拖拽
9、規(guī)劃顯示,運(yùn)轉(zhuǎn)期用戶可個性化配置界面展現(xiàn)款式;4提供容器Portlet:將多個單一Portlet組合成一個Portlet;5Portlet添加屬性設(shè)置:支持系統(tǒng)級和業(yè)務(wù)級屬性設(shè)置,且同時支持定義期和運(yùn)轉(zhuǎn)期屬性設(shè)置;6Portlet異步加載:頁簽中每個Portlet異步加載,并發(fā)運(yùn)轉(zhuǎn);7通知和待辦可分類設(shè)置和授權(quán):分類可由管理員一致建立和分配,同時允許用戶自定義分類和管理管理員設(shè)置的分類。第2章 Portlet制造2.1 Portlet制造步驟Portlet制造過程包含以下幾個步驟:1配置Portlet信息2向數(shù)據(jù)庫插入相關(guān)數(shù)據(jù)3制造Portlet內(nèi)容頁面,實(shí)現(xiàn)業(yè)務(wù)需求4制造Portlet業(yè)務(wù)設(shè)
10、置頁面可選最后一個步驟并不是必需的,在Portlet的業(yè)務(wù)需求需求業(yè)務(wù)設(shè)置時,才進(jìn)展此步驟。下面將分小節(jié)詳細(xì)引見Portlet制造的各個步驟,關(guān)于Portlet業(yè)務(wù)設(shè)置的內(nèi)容將單獨(dú)在第3章中引見。2.2 配置Portlet信息2.2.1 配置Portlet定義信息1配置文件途徑EAS5.4版本:server/profiles/server1/config/portalConfig/portlets.xmlEAS6.0版本:server/deploy/eas.ear/cp_web.war/WEB-INF/portlets_xxx.xml其中,xxx表示詳細(xì)的業(yè)務(wù)領(lǐng)域稱號,如bos、eas等,詳細(xì)
11、信息請參考“附錄1 Portal配置文件拆分闡明2配置闡明1001testPortlet view portlet.test各配置參數(shù)值闡明如下:1001:Portlet定義ID,全局獨(dú)一,不能反復(fù)。取值范圍詳細(xì)商定如下:BOS為 1-199 ,EAS為 200-999, 二次開發(fā)為 1000 以后;testPortlet:Portlet定義信息,無特別要求,普通運(yùn)用英文字符標(biāo)識。留意該標(biāo)題信息僅用于在配置文件中區(qū)分不同的Portlet,與Portlet在運(yùn)轉(zhuǎn)時顯示的標(biāo)題無關(guān),Portlet在運(yùn)轉(zhuǎn)時顯示的標(biāo)題信息由數(shù)據(jù)庫中的內(nèi)容決議,2.3小節(jié)有詳細(xì)闡明;portlet.test:對應(yīng)于“Po
12、rtlet業(yè)務(wù)處置信息的配置信息,詳細(xì)見下一小節(jié)。2.2.2 配置Portlet業(yè)務(wù)處置信息1配置文件途徑server/deploy/eas.ear/cp_web.war/WEB-INF/tiles-defs_xxx.xml其中,xxx表示詳細(xì)的業(yè)務(wù)領(lǐng)域稱號,如bos、eas等,詳細(xì)信息請參考2.2.1節(jié)中的附件。2配置闡明各配置參數(shù)值闡明如下:portlet.test:tiles定義稱號,和上一節(jié)Portlet定義信息的配置堅(jiān)持一致;1001:對應(yīng)的Portlet定義ID,和上一節(jié)Portlet定義信息的配置堅(jiān)持一致;/html/custom/test.jsp:業(yè)務(wù)處置頁面即2.5節(jié)將提到的
13、“Portlet內(nèi)容頁面地址,假設(shè)是Struts,那么還需求在struts-config.xml中進(jìn)展配置,詳細(xì)可以參考Struts官方文檔。2.3 向數(shù)據(jù)庫插入相關(guān)數(shù)據(jù)經(jīng)過EAS管理控制臺執(zhí)行如下腳本,在數(shù)據(jù)庫中插入一條記錄,KSQL語句如下:INSERT INTO T_Portal_Portlet(FID,FCreatorID,FCreateTime,FLastUpdateUserID,FLastUpdateTime,FControlUnitID,FPortletDefineId,FPortletName_L1,FPortletName_L2,FPortletName_L3,FEnable
14、,FPortletNumber,FDescription_L1,FDescription_L2,FDescription_L3, FPortletCategoryID) VALUES(NEWBOSID(0B344890),00000000-0000-0000-0000-00000000000013B7DE7F,ts2021-10-01 12:13:14,00000000-0000-0000-0000-00000000000013B7DE7F,ts2021-10-01 12:13:14,00000000-0000-0000-0000-000000000000CCE7AED4,N104,NULL,
15、N周江測試1,N周江測試1,1,NPN-104,NULL, N周江測試1, N周江測試1, XkGI/dDGlkWJhX5ZEW9lOEPH2a4=);闡明與本卷須知:1插入字段FID的值請務(wù)必運(yùn)用函數(shù)NEWBOSID,其中0B344890為Portlet實(shí)體元數(shù)據(jù)編碼,該值不能更改為其他值,否那么程序獲取Portlet信息時將出錯。函數(shù)NEWBOSID(0B344890)每次執(zhí)行會產(chǎn)生新的ID值,假設(shè)作為腳本提交,請留意修正為一個確定的ID值,且一定要支持可反復(fù)晉級。2字段FPortletDefineId的值一定要和Portlet定義信息配置文件2.2.1節(jié)中定義的值堅(jiān)持一致。3繁體字段一定
16、要運(yùn)用繁體文字,否那么和言語不匹配。4字段FPortletNumber的值為Portlet編碼,其值不做硬性要求,但建議運(yùn)用“PN-+Portlet定義ID的方式,如PN-1001。注:(2021-11-16) BOS SP3工程義務(wù)中參與Portlet分類管理,因此新增了字段FPortletCategoryID相關(guān)默許分類ID如下:根底系統(tǒng):FZIyxl8gLUmP15IW8klEnUPH2a4=根底資料: VTh25HxPQEKvvaIWWecTGEPH2a4=財(cái)務(wù)會計(jì): VFcHBNjYQ0qfzqDnSOOmMkPH2a4=資產(chǎn)管理: 90O4cecHikiMJoEHN5Pg8kPH2
17、a4=人力資源: 5ZE/Jdo9XkGqY38v30oQXkPH2a4=管理睬計(jì): 4M141/5vlU6fPGEOu+pG7UPH2a4=資金管理: hLg/8i2uPkmQOAKsHt88f0PH2a4=商業(yè)分析:IbLhLRrJxUyZgDXwsRDKR0PH2a4=協(xié)同平臺: m6AWen4UD0SBnZ2qs/Dn5kPH2a4=供應(yīng)鏈管理:m6AWen4UD0SBnZ2qs/Dn5kPH2a4=本錢管理: R2IPXjFfWEKCFO8i99+bJEPH2a4=數(shù)據(jù)倉庫: cXvgkmCk+0Wf9OTQKtkG3UPH2a4=房地產(chǎn):kY+l8pEiI0mtkcUNsF/+uU
18、PH2a4=產(chǎn)業(yè)鏈協(xié)同: Q+Y2omUEm0ClpF1FbQAlEUPH2a4=其他:XkGI/dDGlkWJhX5ZEW9lOEPH2a4=因此新增Portlet時需求明確他的Portlet要放在哪個分類下,并將對應(yīng)的分類id插入到Portlet表中。假設(shè)不插入該字段,Portlet會默許顯示在根節(jié)點(diǎn)分類下Portlet類別可以在Portlet管理里面新增,因此他可以新建一個本人的類別,同時需求查詢“t_portal_portletCategory表,獲取到他新建類別的id,再來插入他的Portlet到剛剛新建的類別中2.4 Portlet配置信息與數(shù)據(jù)庫數(shù)據(jù)的對應(yīng)關(guān)系通常情況下,一條Po
19、rtlet配置信息portlets.xml以及tiles-defs.xml中各一個條目對應(yīng)數(shù)據(jù)庫表T_Portal_Portlet中的一條數(shù)據(jù)。假設(shè)多個Portlet運(yùn)用一樣的內(nèi)容頁面tiles-defs.xml中的,那么一條Portlet配置信息將對應(yīng)數(shù)據(jù)庫表T_Portal_Portlet中的多條數(shù)據(jù)。一條Portlet配置信息對應(yīng)數(shù)據(jù)庫表T_Portal_Portlet中的多條數(shù)據(jù)的運(yùn)用場景:內(nèi)容管理定義了一個Portlet內(nèi)容頁面,每個欄目可以分別對應(yīng)一個Portlet定義,不同的Portlet定義經(jīng)過參數(shù)進(jìn)展區(qū)分,參數(shù)中記錄欄目ID??梢越?jīng)過程序動態(tài)創(chuàng)建,也可以采用實(shí)體提交的方式。對
20、應(yīng)實(shí)體:com.kingdee.eas.portal.PortletInfo /Portlet定義com.kingdee.eas.portal.PortletParameterInfo /Portlet參數(shù)運(yùn)用程序創(chuàng)建完后,需求刷新緩存才干起作用,相關(guān)API見2.5.1節(jié)第4點(diǎn)。2.5 制造Portlet內(nèi)容頁面,實(shí)現(xiàn)業(yè)務(wù)需求EAS門戶中的Portlet能夠具有多個頁面,如用于展現(xiàn)業(yè)務(wù)邏輯的主頁面、業(yè)務(wù)設(shè)置頁面以及協(xié)助 闡明頁面等。用于展現(xiàn)業(yè)務(wù)邏輯的主頁面我們稱之為“Portlet內(nèi)容頁面,它是一個JSP頁面,但并不是完好的,其最終輸出為HTML片段,不能包含、以及標(biāo)簽。以下是錯誤寫法例如,P
21、ortlet內(nèi)容頁面不應(yīng)該包含藍(lán)色部分的標(biāo)簽:EAS.以下圖展現(xiàn)了Portlet內(nèi)容頁面以及Portlet業(yè)務(wù)設(shè)置頁面。圖2-1 Portlet內(nèi)容頁面 圖2-2 Portlet業(yè)務(wù)設(shè)置頁面Portlet內(nèi)容頁面由相關(guān)的各業(yè)務(wù)部門根據(jù)各自的業(yè)務(wù)需求詳細(xì)實(shí)現(xiàn)。EAS門戶框架在Portlet內(nèi)容頁面上下文中提供了相應(yīng)的接口以協(xié)助 開發(fā)人員完成詳細(xì)業(yè)務(wù)邏輯的編寫。2.5.1 Portlet內(nèi)容頁面JSP接口1獲取EAS上下文Context運(yùn)用工具類WebContextUtil的getEasContext()方法。例如:Context userCtx = WebContextUtil.getEasCo
22、ntext(request);2獲取上下文中的用戶、組織、職員等信息運(yùn)用工具類ContextUtil,例如:.String name = null;PersonInfo personInfo = ContextUtil.getCurrentUserInfo(ctx).getPerson();if (personInfo != null) name = personInfo.getName();3調(diào)用效力器端方法EAS6.0打補(bǔ)丁PTM035205之前:與ControlBean中調(diào)用本地方法一樣,例如:Context ctx = WebContextUtil.getEasContext(requ
23、est);IMessageCenter iMessageCenter = MessageCenterFactory.getLocalInstance(ctx);IRowSet rowset = iMessageCenter.getAcceptedTask();EAS6.0打補(bǔ)丁PTM035205之后:IMessageCenter iMessageCenter = MessageCenterFactory.getRemoteInstance();IRowSet rowset = iMessageCenter.getAcceptedTask();4Portlet操作運(yùn)用接口com.kingdee.
24、eas.portal.IPortalServiceFacade,該接口提供以下方法:禁用Portlet含批量處置:disablePortlet 啟用Portlet含批量處置:enablePortlet作廢Portlet:deletePortlet新增Portlet無前往值:addPortlet新增Portlet前往新建ID:addPortletReturnId更新Portlet:update刷新Portlet緩存:refreshPortletCache獲取Portlet:getPortlet留意:一切與Portlet相關(guān)的操作,如添加、刪除、更新等,都必需運(yùn)用該接口,不要直接調(diào)用IPortle
25、t接口對Portlet進(jìn)展操作;進(jìn)展Portlet操作獲取Portlet除外后,在最后務(wù)必運(yùn)用refreshPortletCache來刷新Portlet緩存數(shù)據(jù)。例如:IPortalServiceFacade service = PortalServiceFacadeFactory.getLocalInstance(ctx);service.enablePortlet(portletID);service.refreshPortletCache();對PortletExtInfo的操作,由于PortletInfo包含PortletExtInfo,因此同樣經(jīng)過接口com.kingdee.eas.
26、portal.IPortalServiceFacade進(jìn)展,舉例如下:其中,portletInfo為PortletInfo的實(shí)例添加PortletExtInfoPortletExtInfo portletExtInfo = new PortletExtInfo();portletExtInfo.setTitle(自定義Portlet標(biāo)題);portletExtInfo.setBizDefUrl(/html/portlet/example/demoPortletDefSetting.jsp);portletExtInfo.setBizInsUrl(/html/portlet/example/de
27、moPortletInsSetting.jsp);portletInfo.setPortletExt(portletExtInfo);IPortalServiceFacade psf = PortalServiceFacadeFactory.getLocalInstance(ctx);/ 假設(shè)portletInfo是新增,那么psf.addPortlet(portletInfo);/ 假設(shè)portletInfo是修正,那么/psf.update(portletInfo.getId(), portletInfo);修正PortletExtInfoPortletExtInfo portletExt
28、Info = portletInfo.getPortletExt();portletExtInfo.setTitle(修正自定義Portlet標(biāo)題);IPortalServiceFacade psf = PortalServiceFacadeFactory.getLocalInstance(ctx);psf.update(portletInfo.getId(), portletInfo);刪除PortletExtInfoportletInfo.setPortletExt(null);IPortalServiceFacade psf = PortalServiceFacadeFactory.ge
29、tLocalInstance(ctx);psf.update(portletInfo.getId(), portletInfo);5獲取Portlet相關(guān)信息包括Portlet定義和實(shí)例信息,如Portlet在配置文件中的定義ID,在數(shù)據(jù)庫中的定義ID、實(shí)例ID以及Portlet的個性化信息自定義標(biāo)題、高度、顏色配置等等。運(yùn)用工具類com.kingdee.eas.portal.web.util.PortletUtil可以在Portlet內(nèi)容頁面以及業(yè)務(wù)設(shè)置頁面后續(xù)將提及上獲取Portlet的相關(guān)信息,包括Portlet的個性化信息假設(shè)存在的話。以Portlet內(nèi)容頁面為例,假設(shè)需求在此頁面獲得
30、Portlet的自定義顯示稱號以及Portlet實(shí)例的高度。首先引入PortletUtil:獲取Portlet自定義顯示稱號:String customizedName = PortletUtil.getCustomizedName(request);獲取Portlet實(shí)例高度:int insHeight = PortletUtil.getInsHeight(request);高度值單位為像素,假設(shè)高度值為0,那么表示實(shí)例的高度自順應(yīng)。關(guān)于PortletUtil的接口請參考“附錄2 PortletUtil API。代碼參考:server/deploy/eas.ear/cp_web.war/ht
31、ml/portlet/example/demoPortlet.jsp2.5.2 Portlet內(nèi)容頁面JS接口這些JS接口變量或者函數(shù)在Portlet內(nèi)容頁面中可直接運(yùn)用。1Buffalo Ajax框架定義了兩個Buffalo對象:buffaloAsync:異步方式buffaloSync:同步方式運(yùn)用例如:buffaloAsync.remoteCall(messageService.getMsgCount, true, function(reply) var arr = reply.getResult(); .在Portlet內(nèi)容頁面中運(yùn)用Buffalo時請直接運(yùn)用以上兩個對象,不用重新創(chuàng)建B
32、uffalo對象。在上一版本中,框架提供的Buffalo對象稱號分別為:buffalo:異步方式buffalo1:同步方式這兩個對象在門戶框架新版本中依然保管,但不建議運(yùn)用。請運(yùn)用buffaloAsync和buffaloSync。留意,假設(shè)需求創(chuàng)建新的Buffalo對象,請防止運(yùn)用buffaloAsync、buffaloSync、buffalo、buffalo1這4個變量命名,否那么將會覆蓋這些框架提供的Buffalo對象。2翻開客戶端GUI界面invokeFunction(uiClass, uiClassParam, uiOprt, openMethod);createModelUI(uiC
33、lass);createNewWinUI(uiClass);createNewTabUI(uiClass);openEasMainMenu();其中uiOprt可設(shè)置為字符串: ADDNEW、VIEW、EDITADDNEW:新增VIEW:查看EDIT:編輯openMethod可設(shè)置為數(shù)字:50、80、及其他數(shù)字50:模態(tài)窗口80:新開窗口其他值:新開頁簽單據(jù)查看GUI界面接口:viewBill(billId);參數(shù)為單據(jù)ID單據(jù)的UUID,非單據(jù)編號,EAS門戶頁面在不同幀下調(diào)用方式略有不用,門戶各頁簽Portlet比如我的日歷,我的任務(wù)臺等規(guī)范調(diào)用方式為直接調(diào)用: viewBill(63fY
34、Lq2CTOCwsBgFdet+6Qneydw=);而各自頁簽參與了幀frame的情況下如流程中心參與了newMessageFrame,需求如下調(diào)用: parent.viewBill(63fYLq2CTOCwsBgFdet+6Qneydw=); 其他多層幀的情況以此類推,需求經(jīng)過parent或者top等方式獲取上層的JS函數(shù)來調(diào)用。更多關(guān)于翻開GUI界面的函數(shù)請參考以下文件:server/deploy/eas.ear/cp_web.war/common/js/easHandler.js3拖動Portlet后刷新Portlet內(nèi)容該功能常用于Portlet寬度需求自順應(yīng)的場景,如“通知Portl
35、et和“待辦事項(xiàng)Portlet,由于這兩個Portlet的寬度由JS動態(tài)計(jì)算而得,所以當(dāng)他們挪動到其他不同寬度的區(qū)域時,需求重新計(jì)算寬度,這時候就需求刷新Portlet內(nèi)容以觸發(fā)寬度的重新計(jì)算。在Portlet內(nèi)容頁面中實(shí)現(xiàn)以下函數(shù),并前往true值:function afterPortletDrop(toWidth) return true;其中,是用于防止JS變量或函數(shù)命名沖突的標(biāo)識關(guān)于JS腳本變量和函數(shù)命名約束以及該標(biāo)識如何獲得等問題請參考2.5.3節(jié),該標(biāo)識必需加上,否那么框架無法判別需求刷新哪個Portlet。參數(shù)toWidth為目的區(qū)域的寬度值,由框架傳送,在該函數(shù)內(nèi)可用該參數(shù)值進(jìn)
36、展一些必要的處置。不實(shí)現(xiàn)該函數(shù)或者函數(shù)前往true以外的值,那么拖動Portlet后,Portlet內(nèi)容不刷新。4其他Portal途徑:kingdee.portalmon.portalContextPath;其值如::6888/easportalPortal當(dāng)前顏色方案皮膚途徑:kingdee.portalmon.portalSkinPath;其值如::6888/easportal/skin/01添加CSS款式文件到門戶的head區(qū)域kingdee.portalmon.addStyleSheet(cssFilePath);其中cssFilePath為CSS文件的途徑,用法例如:kingdee.
37、portalmon.addStyleSheet();注,并不一定要運(yùn)用WebContextUtil.render方法來獲得CSS文件的途徑,可以直接如下運(yùn)用:kingdee.portalmon.addStyleSheet(/html/portlet/example/demoPortlet.css);但是,運(yùn)用WebContextUtil.render方法獲取文件可獲得緊縮特性,建議運(yùn)用該方法。最大化Portletkingdee.portalmon.maxizePortlet(windowTitle, servletUrl, params);其中,windowTitile為最大化Portlet時
38、,窗口的標(biāo)題,servletUrl為最大化Portlet所運(yùn)用的url地址,params為需求傳送的參數(shù)2.5.3 Portlet內(nèi)容頁面制造規(guī)范與約束1業(yè)務(wù)JSP代碼文件放置規(guī)范二次開發(fā)的業(yè)務(wù)JSP代碼受維護(hù)的需求放到server/deploy/eas.ear/cp_web.war/html/custom目錄下。非受維護(hù)的需求放到server/deploy/eas.ear/cp_web.war/custom目錄下。EAS規(guī)范產(chǎn)品的業(yè)務(wù)JSP代碼受維護(hù)的需在server/deploy/eas.ear/cp_web.war/html/portlet目錄下建立對應(yīng)的業(yè)務(wù)系統(tǒng)子目錄,并放置對應(yīng)的業(yè)務(wù)
39、JSP代碼。非受維護(hù)的在server/deploy/eas.ear/cp_web.war/biz目錄下建立對應(yīng)子目錄,并放置對應(yīng)業(yè)務(wù)JSP代碼。受維護(hù)和非受維護(hù)的區(qū)別受維護(hù)的JSP頁面必需求經(jīng)過EAS Portal登錄后才干訪問,非受維護(hù)是指不需求EAS Portal登錄就可以訪問。2JS代碼文件放置規(guī)范JS文件放置到以下目錄:server/deploy/eas.ear/cp_web.war/common/js/各業(yè)務(wù)部門請自行在js目錄下建立子文件夾,以區(qū)分框架和其他部門的JS代碼。該目錄下包括子目錄的一切JS文件在構(gòu)建時都會自動進(jìn)展緊縮,將JS文件放置在其他目錄將不會獲得緊縮特性。3Por
40、tlet內(nèi)容頁面中,JS腳本變量和函數(shù)命名約束重要在一個HTML文檔內(nèi),JavaScript全局變量和函數(shù)命名必需獨(dú)一,否那么會被后定義的覆蓋。由于EAS門戶中,不同頁簽,不同Portlet的內(nèi)容最終將輸出到一個HTML文檔中,為了防止不同的Portlet內(nèi)定義一樣稱號的JS變量或者在不同的頁簽內(nèi)包含一樣的Portlet定義,必需保證Portlet之間全局JS變量名和函數(shù)名獨(dú)一。提示:只需Portlet內(nèi)容頁面JSP片段需求思索命名問題,保證全局變量和函數(shù)命名獨(dú)一,其他獨(dú)立的頁面包含完好的HTML標(biāo)簽的頁面,如運(yùn)用iframe方式嵌入的頁面、Portlet業(yè)務(wù)設(shè)置頁面等那么不需求思索該問題。最
41、正確實(shí)際:盡量少運(yùn)用全局變量。大量地運(yùn)用全局變量將添加變量命名沖突的幾率,應(yīng)該謹(jǐn)慎運(yùn)用全局變量。關(guān)于如何減少JS全局變量和函數(shù)數(shù)量的方法請見2.5.4節(jié)。補(bǔ)充知識:在JS函數(shù)內(nèi),運(yùn)用var關(guān)鍵字定義變量,變量的作用域?yàn)椴糠肿饔糜颍僭O(shè)不運(yùn)用var關(guān)鍵字,那么為全局作用域。JS函數(shù)內(nèi)的部分變量定義時都應(yīng)該加上var關(guān)鍵字。運(yùn)用以下兩種接口之一,均可獲得與當(dāng)前Portlet實(shí)例相關(guān)的全局獨(dú)一標(biāo)識“指紋信息。為Portlet內(nèi)容頁面中JS腳本的每個全局變量和函數(shù)加上該標(biāo)識,那么可保證該P(yáng)ortlet實(shí)例的JS全局變量和函數(shù)在EAS門戶中全局獨(dú)一,防止不同Portlet之間以及不同頁簽一樣Portle
42、t不同實(shí)例之間的JS變量和函數(shù)命名沖突。接口1:運(yùn)用com.kingdee.eas.portal.web.util.PortletUtil例如:/ fp is short for fingerprintString fp = PortletUtil.getFingerprint(request);接口2:運(yùn)用com.kingdee.eas.portal.web.util.PortletIndexGenerator例如:/ fp is short for fingerprintString fp = PortletIndexGenerator.nextPortletIndex(request);
43、兩種接口的區(qū)別:接口1既可以在Portlet內(nèi)容頁面中運(yùn)用,也可以在Portlet業(yè)務(wù)設(shè)置頁面中運(yùn)用見第3章;而接口2只能在Portlet內(nèi)容頁面中運(yùn)用。獲得“指紋信息后例如中為Java變量fp,為每個全局變量和函數(shù)加上該標(biāo)識,代碼例如如下:var a = 1;var b = 2;function fnOne() function fnTwo() a href=# onclick=fnTwo()My Link上面的例子中,一共定義了4個全局變量包括函數(shù),通常情況下,應(yīng)盡量控制全局變量的數(shù)量,關(guān)于如何減少JS全局變量和函數(shù)數(shù)量的方法請見2.5.4節(jié)。留意:該約束必需嚴(yán)厲執(zhí)行,以防止影響框架和Po
44、rtlet的功能。4Portlet內(nèi)容頁面中,CSS款式命名規(guī)范重要和JS腳本變量和函數(shù)命名需求全局獨(dú)一一樣,CSS中的class和id命名也需求思索到全局影響的情況。提示:只需Portlet內(nèi)容頁面JSP片段需求思索命名問題,保證class和id命名獨(dú)一,其他獨(dú)立的頁面包含完好的HTML標(biāo)簽的頁面,如運(yùn)用iframe方式嵌入的頁面、Portlet業(yè)務(wù)設(shè)置頁面等那么不需求思索該問題。頁面中的元素id屬性值需求保證全局獨(dú)一,這就需求進(jìn)展類似JS腳本中變量命名約束的操作,如:div id=test-div-假設(shè)id值不添加獨(dú)一標(biāo)識,那么在頁面中存在一樣Portlet的多個實(shí)例能夠位于不同頁簽內(nèi)時,
45、頁面中將出現(xiàn)多個id一樣的元素,這將對款式或腳本產(chǎn)生影響。在Portlet內(nèi)容頁面中書寫CSS款式有兩種方式:在標(biāo)簽中加上style屬性這種方法最直接,而且由于優(yōu)先級最高,可以防止Portlet內(nèi)容的款式遭到Portal全局款式的影響,但維護(hù)起來比較費(fèi)事。引入外部CSS文件這種方法可以對Portlet內(nèi)容的款式進(jìn)展一致管理,方便維護(hù)。運(yùn)用JS腳本引入外部CSS文件的方法如下:kingdee.portalmon.addStyleSheet();紅色部分交換成實(shí)踐的CSS文件地址。關(guān)于該JS接口在2.5.2 節(jié)Portlet內(nèi)容頁面JS接口已有詳細(xì)論述。留意:不要在Portlet內(nèi)容頁面中直接運(yùn)用
46、標(biāo)簽引入款式,框架目前不支持這種方式??梢赃\(yùn)用標(biāo)簽來書寫款式,但并不引薦,由于頁面中存在一樣Portlet的多個實(shí)例時,這些款式將被包含多次,當(dāng)然,這通常不會是什么大問題。運(yùn)用函數(shù)kingdee.portalmon.addStyleSheet添加款式文件時,即時頁面中存在一樣Portlet的多個實(shí)例,款式文件也只會在頁面頭部加載一次。運(yùn)用引入外部CSS文件的方式時,CSS款式的命名需遵照以下規(guī)范:kpp-xxx-yyykpp前綴代表Kingdee Portal Portletxxx為模塊稱號,如mycalendar以“例如Portlet為例,其CSS款式的命名如下所示:.kpp-demopor
47、tlet-table .kpp-demoportlet-class-selector-name 2.5.4 Portlet內(nèi)容頁面制造常見問題1如何嵌入一個完好JSP頁面?可以在JSP頁面中嵌入iframe幀構(gòu)造,場景:EAS Portal中嵌入的OA頁面,詳細(xì)可參考以下文件:server/deploy/eas.ear/cp_web.war/custom/yiruan_oa.jsp 2如何提交頁面數(shù)據(jù)?翻開新窗口進(jìn)展處置運(yùn)用最大化Portlet進(jìn)展處置運(yùn)用Ajax技術(shù)來提交。目前成熟的Ajax框架很多,EAS門戶中采用的是Buffalo框架,相關(guān)開發(fā)指南見“附錄3 Ajax之Buffalo開發(fā)
48、指南。3如何直接執(zhí)行SQL語句?import com.kingdee.eas.util.app.DbUtil;import com.kingdee.jdbc.rowset.IRowSet;Context userCtx = WebContextUtil.getEasContext(request);/執(zhí)行查詢IRowSet rowSet = DbUtil.executeQuery(ctx, select * from t_pm_user);if (rowSet != null) while (rowSet.next() String user = rowSet.getString(fnumbe
49、r);/執(zhí)行更新DbUtil.execute(ctx, update t_pm_user set fname_l2=zhangsan where fnumber=00201);4我覺得我的JS腳本中全局變量和函數(shù)的命名曾經(jīng)很規(guī)范了,比如都加了前綴xxx_yyy_zzz,是不是就可以不運(yùn)用框架提供的方法進(jìn)展變量和函數(shù)命名的修正呢?恐怕不行。由于即使命名曾經(jīng)做了規(guī)范,還是有能夠與其他Portlet或框架的JS變量和函數(shù)產(chǎn)生沖突。即使可以保證和其他Portlet或框架不產(chǎn)生沖突,不同頁簽下一樣Portlet不同實(shí)例的代碼一定也會產(chǎn)生沖突。比如頁簽1下有Portlet1的實(shí)例PortletIns1,其
50、中運(yùn)用了全局JS變量a,頁簽2下有Portlet1的實(shí)例PortletIns2,必定也運(yùn)用了一樣的全局JS變量a,由于不同頁簽之間的Portlet的代碼都在同一個EAS門戶的HTML中,所以JS變量產(chǎn)生了沖突。所以,請務(wù)必按照2.5.3節(jié)第2點(diǎn)的方法進(jìn)展JS腳本全局變量和函數(shù)的命名規(guī)范。5如何盡量少地定義JS腳本中的全局變量函數(shù)?可參考以下風(fēng)格:var mycalendar = a: 1, b: 2, fnOne: function() , fnTwo: function() a href=# onclick=mycalendar.fnTwo()My Link運(yùn)用該方式,只需定義1個全局變量m
51、ycalendar,其他變量或函數(shù)都是部分變量,不會呵斥命名沖突。6原有的Portlet中的代碼主要是JS代碼需求按照J(rèn)S變量和函數(shù)命名規(guī)范進(jìn)展修正嗎?假設(shè)運(yùn)用的是新的門戶框架,那么必需進(jìn)展代碼重構(gòu)。需求進(jìn)展JS代碼重構(gòu)的頁面僅僅是那些對門戶全局JS變量和函數(shù)有影響的頁面,如Portlet內(nèi)容頁面,而對于其他完好的頁面包含完好的HTML,如、等標(biāo)簽,如Portlet業(yè)務(wù)設(shè)置頁面,以iframe方式嵌入到Portlet內(nèi)容頁面的頁面,那么不需求進(jìn)展JS代碼重構(gòu),由于他們對門戶全局JS變量和函數(shù)不會產(chǎn)生影響。7舊Portlet的JS代碼中包含了很多全局變量和函數(shù),一個個修正似乎比較費(fèi)事,有更快的方
52、法嗎?假設(shè)他的JS腳本中存在大量的全局變量,逐個交換比較費(fèi)事,那么可運(yùn)用以下的方法,運(yùn)用1個全局變量來“包裝他的舊代碼:假設(shè)他的舊代碼如下:var var1 = 1;var var2 = 2;var var3 = 3;var var4 = 4;function fn1() function fn2() function fn3() 其中在HTML中運(yùn)用了fn1和fn2兩個函數(shù)重構(gòu)過程如下:定義1個全局變量,并運(yùn)用某個方法例如中為init方法來初始化包裝他的舊代碼塊:var myapp = init: function() / 舊代碼塊 / var var1 = 1; var var2 = 2;
53、 function fn1() / 舊代碼塊 / myapp.init();檢查原有代碼中,在HTML里運(yùn)用了哪些函數(shù),這里只運(yùn)用了fn1和fn2兩個函數(shù)。在新代碼的init方法中為這兩個函數(shù)提供對外的“接口:var myapp = init: function() / 舊代碼塊 / var var1 = 1; var var2 = 2; function fn1() / 舊代碼塊 / / 提供對外的“接口 this.fn1 = fn1; this.fn2 = fn2; myapp.init();如今在HTML中這樣運(yùn)用函數(shù):a href=# onclick=myapp.fn1()a href
54、=# onclick=myapp.fn2()以下圖展現(xiàn)了該重構(gòu)的過程:圖2-3 重構(gòu)過程例如這種方法適用于存在大量全局變量的頁面,可減少交換全局變量的數(shù)量。2.5.5 Portlet內(nèi)容頁面HTC控件的交換在前面的一段時間,門戶控件根本已由HTC交換為EXT控件,因此為提高門戶性能,本次優(yōu)化去除了門戶在TOP頁面中的HTC控件引入。修正能夠呵斥相關(guān)業(yè)務(wù)Portlet或業(yè)務(wù)頁面的原有的HTC控件不可用。處理方案:將HTC控件交換為EXT控件建議EXT控件的根本文件門戶曾經(jīng)在TOP中進(jìn)展引入。因此業(yè)務(wù)portlet頁面或其他內(nèi)置頁面可直接運(yùn)用。門戶運(yùn)用的EXT版本為2.0 RC 1留意:單獨(dú)翻開的
55、頁面以及業(yè)務(wù)portlet中嵌入的iframe等,需求重新自行引入ext的類庫。引入文件參見cp_web.warhtmlcommontop.jsp自行引入HTC控件不引薦假設(shè)還是想運(yùn)用原有的HTC或暫時不想交換,需在本人的頁面自行引入HTC控件如下兩個文件引入了一切原有的HTC控件,假設(shè)他只是想運(yùn)用其中一兩種,請?jiān)趖op_htc_js.jsp文件中找到本人的HTC控件作單獨(dú)引入交換為EXTJS控件方式:用EXT控件交換HTC直接運(yùn)用EXT的規(guī)范控件即可。以下以button控件交換為例在原有的標(biāo)簽中如然后寫一個JavaScript函數(shù)創(chuàng)建一個EXT控件即可function initButton(
56、)new Ext.Button(renderTo: myBtn,text: 更多,handler: btnClick);這樣在運(yùn)轉(zhuǎn)時直接渲染一個Ext的按鈕到標(biāo)簽中詳細(xì)EXT控件運(yùn)用可參考EXTJS開源類庫2.5.6 門戶優(yōu)化合并且刪除了部分js此處優(yōu)化門戶對各種KD擴(kuò)展ext的js文件進(jìn)展了合并。為了不維護(hù)兩份代碼添加任務(wù)量。對被合并的js進(jìn)展了刪除。/common/js/extsp/js/compenent/KDMultiLangBox.js/common/js/extsp/js/compenent/KDLabel.js/common/js/extsp/js/compenent/KDPor
57、tlet.js/common/js/extsp/js/compenent/KDPagingToolBar.js/common/js/extsp/js/compenent/KDTabPanel.js/common/js/extsp/js/compenent/KDYStyleTabPanel.js/common/js/extsp/js/compenent/KDTabPanelMenu.js/common/js/extsp/js/compenent/KDTabPanelForColumn.js/common/js/extsp/js/compenent/KDTabPanelLoadScript.js合
58、并為:/common/js/extsp/KDUxCompenent.js/common/js/extsp/js/menu/KDMenu.js/common/js/extsp/js/menu/KDDateMenu.js/common/js/extsp/js/menu/KDDateItem.js/common/js/extsp/js/menu/KDDatePicker.js合并為:/common/js/extsp/KDUxMenu.js/common/js/extsp/js/layout/KDCardLayout.js/common/js/extsp/js/layout/KDTableLayout
59、2.0.js/common/js/extsp/js/layout/KDDivTableLayout2.0.js合并為:/common/js/extsp/KDUxLayout.js合并js都是純粹的將js文件內(nèi)容拷貝到一個大的js文件中。假設(shè)業(yè)務(wù)portlet如流程中心單獨(dú)引入了這些js,請修正引入文件,否那么能夠會出現(xiàn)腳本錯誤。目前有兩種方式處置:一是引入合并后的js文件。例如之前引入了KDTabPanelForColumn.js.請修正為引入KDUxCompenent.js。這樣的一點(diǎn)影響是他只運(yùn)用其中一個js內(nèi)容,但是必需把整個大文件的內(nèi)容引入。二是在KDUxCompenent.js中拷貝
60、出對應(yīng)組件的js代碼,本人新建一個js文件自行引入。第3章 Portlet業(yè)務(wù)設(shè)置Portlet業(yè)務(wù)設(shè)置頁面為獨(dú)立的JSP頁面,Portlet開發(fā)者可在Portlet業(yè)務(wù)設(shè)置頁面進(jìn)展相關(guān)業(yè)務(wù)邏輯的編寫如保管用戶的設(shè)置信息等。Portlet業(yè)務(wù)設(shè)置頁面分為兩種類型:1定義期的Portlet業(yè)務(wù)設(shè)置頁面在此進(jìn)展的設(shè)置對全部Portlet實(shí)例有效。該設(shè)置位于:門戶-配置管理-Portlet管理-設(shè)置-業(yè)務(wù)設(shè)置圖3-1 Portlet定義期業(yè)務(wù)設(shè)置頁面2運(yùn)轉(zhuǎn)期的Portlet業(yè)務(wù)設(shè)置頁面在此進(jìn)展的設(shè)置只對當(dāng)前Portlet實(shí)例有效。該設(shè)置位于:詳細(xì)的某個Portlet實(shí)例-右上角設(shè)置按鈕-業(yè)務(wù)設(shè)置 圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校本課程國際課程設(shè)計(jì)
- 2025年山東淄博市市屬事業(yè)單位綜合類崗位招聘工作人員65人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟(jì)寧市屬事業(yè)單位“優(yōu)才”選聘歷年管理單位筆試遴選500模擬題附帶答案詳解
- 年會董事長致辭
- 2025年山東濟(jì)南市槐蔭區(qū)所屬事業(yè)單位招聘51人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟(jì)南信息工程學(xué)校招聘人員17人管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東棗莊工程技師學(xué)院招聘備案制工作人員30人管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東文化廳所屬事業(yè)單位招考工作人員管理單位筆試遴選500模擬題附帶答案詳解
- 機(jī)械原理課程設(shè)計(jì)網(wǎng)球
- 微課程設(shè)計(jì)花鐘
- 生活小妙招(修訂版)
- 人事入轉(zhuǎn)調(diào)離分析報(bào)告
- 管道工安全培訓(xùn)課件
- 胃癌的早期預(yù)防和篩查
- 汽車安全與法規(guī) (第3版) 課件 第1-3章 汽車安全技術(shù)概述、汽車安全技術(shù)法規(guī)與標(biāo)準(zhǔn)、汽車主動安全性
- 公路工程定額應(yīng)用-公路工程定額的組成
- 保險行業(yè)風(fēng)控規(guī)則與制度培訓(xùn)
- 2022-2023學(xué)年佛山市禪城區(qū)六年級數(shù)學(xué)第一學(xué)期期末達(dá)標(biāo)測試試題含解析
- 《廣聯(lián)達(dá)培訓(xùn)教程》課件
- 揚(yáng)州育才小學(xué)2023-2024六年級數(shù)學(xué)上冊期末復(fù)習(xí)試卷(一)及答案
- 函數(shù)的單調(diào)性說課課件-2023-2024學(xué)年高一上學(xué)期數(shù)學(xué)人教A版(2019)必修第一冊
評論
0/150
提交評論