精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

liferay與portlet之間的通信

開發 后端
從我做Liferay到現在,這個問題一直都存在著,直到最近我才算是找到了一個可靠的方案,能夠滿足各種需求,從我最開始做到現在一共用到了四種方案,從低到高,我們一個一個的講。

從我做Liferay到現在,這個問題一直都存在著,直到最近我才算是找到了一個可靠的方案,能夠滿足各種需求,從我最開始做到現在一共用到了四種方案,從低到高,我們一個一個的講。

一、通過URL傳值

這個是我在項目中***次遇到這樣的問題,找出的一個方案,原理就是A把B需要的參數加在自已生成的URL后面,然后再把整個頁面view一次,B根據取得的參數再做相應的處理,取URL參數代碼如下:

Java代碼

 

 

  1. public class CurrentURLUtil {     
  2.     
  3. public static Log log = LogFactory.getLog(CurrentURLUtil.class);     
  4.     
  5. public static int contain(String currentURL, String param) {     
  6.     return currentURL.indexOf(param);     
  7. }     
  8.     
  9. public static String getString(String currentURL, String param) {     
  10.     
  11.     try {     
  12.         int paramIndex = contain(currentURL, param);     
  13.     
  14.         if (paramIndex == -1) {     
  15.             // log.warn("CurrentURL don't contain the parameter that name     
  16.             // is:"+param+",and method will return a blank");     
  17.             return "";     
  18.         } else {     
  19.             int afaterParamSperatorIndex = currentURL.indexOf("&", paramIndex+1);     
  20.     
  21.             if (afaterParamSperatorIndex == -1) {     
  22.                 return currentURL.substring(paramIndex + param.length() + 1);     
  23.             } else    
  24.                 return currentURL.substring(paramIndex + param.length() + 1,     
  25.                         afaterParamSperatorIndex);     
  26.         }     
  27.     } catch (RuntimeException e) {     
  28.         // TODO Auto-generated catch block     
  29.         return "";     
  30.     }     
  31. }     
  32.     
  33.     
  34. public static String getString(String currentURL, String param, String defaultStr) {     
  35.          
  36.     String value = getString(currentURL, param);     
  37.          
  38.     if(Validator.isNull(value))     
  39.         return defaultStr;     
  40.     else    
  41.         return value;     
  42.          
  43. }     
  44.     
  45. public static long getLong(String currentURL, String param) {     
  46.     String value = getString(currentURL, param);     
  47.     if (null == value || value.trim().equals("")) {     
  48.         return 0;     
  49.     } else if(Validator.isNumber(value))     
  50.         return Long.parseLong(value);     
  51.     else    
  52.         return 0;     
  53. }    

 

這種方法有比較多的缺陷,比如傳的參數只能是string,如果是map,list,大數據就不可行了,另外還有一個問題,安全性不高,你無法預料到這個頁面上有多少portlet,每個portlet會有多少操作,而每個操作都會產生一個url,會不會出現相同key?出錯的機率較高。

二、通過session傳值

這種方式和***種方式原理都是相同的,只不過要安全一些。A觸發一個action,在action里面把自已要處理的工作做完了后,把B需要的東西放在session里面,B在render里面去取這些東西,然后來完成自已的工作,或者就在JSP里面完成這些工作。但是這樣就出現了一個問題,你無法知道A先處理完還是B先處理完,解決的這個問題的方法有兩個,一個是讓B在處理之間等待一段時間,這個時間A一定能把工作完成,另外一個方法是用鎖的方式來解決,建一個static map,A負責開鎖,B負責鎖上,兩個千萬不能搞錯,當鎖為空或false時,B就去等侍,直到鎖打開。但是一定要記得在B處理完成后把鎖銷毀。這種方式,我也只在項目中用過一次。

三、通過模擬B的PortletURL

后面兩種方式也是我最近半年來才學會的,應該是安全的。先上一段代碼是模擬B的PortletURL的關鍵

Java代碼

 

 

  1. private static long _getPlidFromPortletId(HttpServletRequest request, long groupId,      
  2.             boolean isPrivate, String portletId, Entry... entry) {     
  3.              
  4.         long plid = 0;     
  5.         if (entry == null) {     
  6.             plid = PortalUtil.getPlidFromPortletId(groupId, isPrivate, portletId);     
  7.             if(Validator.isNull(plid))     
  8.                 plid = Long.valueOf(0);     
  9.         } else {     
  10.             try {     
  11.                 List layouts = LayoutLocalServiceUtil.getLayouts(groupId, isPrivate, LayoutConstants.TYPE_PORTLET);     
  12.                 for (Layout layout : layouts) {     
  13.                     LayoutTypePortlet layoutTypePortlet =     
  14.                         (LayoutTypePortlet)layout.getLayoutType();     
  15.     
  16.                     if (layoutTypePortlet.hasPortletId(portletId)) {     
  17.                         if (PortalUtil.getScopeGroupId(layout, portletId) == groupId) {     
  18.                             plid = layout.getPlid();     
  19.                                  
  20.                             List list = PortletPreferencesLocalServiceUtil     
  21.                                 .getPortletPreferences(plid, portletId);     
  22.                             if (Validator.isNotNull(list)) {     
  23.                                 for (PortletPreferences pre : list) {     
  24.                                          
  25.                                     int i = 0;     
  26.                                     if (entry.length < 1){     
  27.                                         plid = pre.getPlid();     
  28. //                                      _plidCache.put(key, plid);     
  29.                                         return plid;     
  30.                                     }     
  31.                                          
  32.                                     javax.portlet.PortletPreferences jpre = PortletPreferencesSerializer     
  33.                                             .fromXML(PortalUtil.getCompanyId(request), pre     
  34.                                                     .getOwnerId(), pre.getOwnerType(), plid,     
  35.                                                     portletId, pre.getPreferences());     
  36.                                     for (; i < entry.length; i++) {     
  37.                                         Entry en = entry[i];     
  38.                                         if (!jpre.getValue(en.getKey().toString(),     
  39.                                                 StringPool.BLANK).equals(     
  40.                                                 en.getValue().toString()))     
  41.                                             break;     
  42.                                     }     
  43.                                     if (i == entry.length){     
  44.                                         plid = pre.getPlid();     
  45. //                                      _plidCache.put(key, plid);     
  46.                                         return plid;     
  47.                                     }     
  48.                                 }     
  49.                             }     
  50.                         }     
  51.                     }     
  52.                 }     
  53.             } catch (SystemException e) {     
  54.                 // TODO Auto-generated catch block     
  55.                 e.printStackTrace();     
  56.             }     
  57.         }     
  58.         return plid;     
  59.     }     
  60.     
  61.     public static PortletURL getPortletURL(long groupId, String portletId,     
  62.             HttpServletRequest request, Entry... entry) {     
  63.     
  64.         long plid = _getPlidFromPortletId(request, groupId, false, portletId, entry);     
  65.         return new PortletURLImpl(request, portletId, plid,     
  66.                 PortletRequest.RENDER_PHASE);     
  67.     }     
  68.          
  69.     public static PortletURL getPortletURL(long groupId, long plid, String portletId,     
  70.             HttpServletRequest request, Entry... entry) {     
  71.         return new PortletURLImpl(request, portletId, plid,     
  72.                 PortletRequest.RENDER_PHASE);     
  73.     }    

 

根據上面代碼能看出,最關鍵是要取得plid,如果你兩個需要通信的portlet在一個頁面上,那就省了大事了,不然你就要去調用_getPlidFromPortletId這個,***一個參數是為了匹配這個portlet的configartion信息,因為一個網站有十幾個頁面,可能其中三個頁面會有這一個portlet,增加這個參數能提高準確性,但是影響性能。PortletURL得到了,那后面的事就好辦了,如果你是A只是為了傳信息本身不做任何處理,把參數放到PortletURL里,然后用就可以了,如果A要做完自已的工作再傳,那就以Action里面做完自已的工作,然后sendRedirect到PortletURL.toString()就可以了。這種方式應該是比較安全可靠的,并且我在幾個項目中都已經實施過了。注意 :此方案僅能支持B屬性false的portlet

四、通過jQuery.ajax異步通信

這個是***的一個方案,目前正在進行的項目我用了這個方案,其基本思想是:A后臺通知B去工作,然后A前臺讓B顯示工作結果,這個方案比較酷。具體實現如下:

1.A通過jQuery.ajax去請求B的jsonAction(參照前面Liferay異步提交文章)

2.然后根據返回結果讓B顯示處理結果(參照前面Liferay異步刷新文章中的第二種類型)

注:如果你A也要處理工作,那就讓A先處理然后根據結果再調用B的jsonAction,***讓A和B都分別顯示各自的工作結果。當然你也可以把A和B要做的工作都放在一個jsonAction里面

【編輯推薦】

  1. 在Liferay中使用Hibernate
  2. Liferay Portal中的jBPM配置
  3. 開源Portal工具Liferay Portal 4.0發布
  4. hibernate中update與saveOrUpdate的區別
  5. Hibernate模糊查詢參數化的問題
責任編輯:金賀 來源: JavaEye博客
相關推薦

2009-11-23 20:10:31

ibmdwPortlet

2012-12-24 14:40:54

iosjs

2009-12-03 18:15:04

Linux

2019-06-25 10:53:06

AndroidFlutter通信

2011-08-31 13:22:37

PhoneGapAndroidjavascript

2012-12-21 09:19:29

Google GO

2009-06-25 16:49:24

Hibernate

2012-12-03 13:54:15

IBMdW

2010-03-18 19:06:35

Java socket

2021-11-08 07:48:50

管道流通信數據

2009-09-10 11:26:59

C# form

2009-06-23 15:49:00

Liferay Por

2018-10-11 05:07:19

物聯網通信IOT

2021-12-16 16:20:57

GoWebSocketLinux

2020-07-06 07:52:10

Kubernetes網絡通信

2016-09-14 21:44:50

JavascriptreactJsjsx

2009-11-04 15:54:20

Portlet入門企業門戶

2021-02-14 21:05:05

通信消息系統

2021-08-02 08:22:33

BlazorEventCallba通信

2013-05-10 13:27:55

FedoraUbuntu
點贊
收藏

51CTO技術棧公眾號

日韩欧美另类中文字幕| 国产精品视频无码| 日韩美脚连裤袜丝袜在线| 亚洲在线视频免费观看| 成人免费午夜电影| 亚洲不卡在线播放| 嫩草国产精品入口| 色天使色偷偷av一区二区| 亚洲欧洲精品在线| 性生活视频软件| 欧美日韩国内| 亚洲欧美色图片| 天堂av在线8| 久久男人天堂| 中文字幕一区二区三区不卡| 99c视频在线| 精品人妻无码一区二区性色| 成人羞羞网站入口| 精品久久久久久久一区二区蜜臀| 黄色a级片免费| 在线观看精品一区二区三区| 久久精品国产亚洲一区二区三区| 欧美大码xxxx| 中文幕无线码中文字蜜桃| 黄页免费欧美| 午夜精品久久久久久久蜜桃app| 精品国产乱码久久久久久郑州公司 | 在线成人免费视频| 精品国偷自产一区二区三区| 免费在线黄色电影| 国产一区91精品张津瑜| 欧美在线亚洲一区| 成人无码精品1区2区3区免费看| 国产精品久久久久久久久久白浆| 精品视频一区 二区 三区| 先锋影音男人资源| 亚洲aⅴ乱码精品成人区| 精品亚洲成a人在线观看 | 精品亚洲乱码一区二区| 粉嫩的18在线观看极品精品| 欧美日韩精品欧美日韩精品| 久在线观看视频| 自拍亚洲图区| 国产精品嫩草久久久久| 麻豆精品视频| av手机免费看| 九一九一国产精品| 国产精品久久久久久搜索| 成年免费在线观看| 亚洲小说欧美另类婷婷| 久久精品视频99| 在线免费观看污视频| 国产剧情一区二区在线观看| 在线观看一区日韩| 国产男女在线观看| 超碰高清在线| 亚洲综合激情另类小说区| 杨幂一区欧美专区| 在线观看麻豆蜜桃| 中日韩av电影| 婷婷四房综合激情五月| 久久视频www| 久久先锋资源网| 精品无人乱码一区二区三区的优势| 成 人 免费 黄 色| 国产成人午夜精品5599| 91久久在线播放| 97超视频在线观看| 精品一区二区三区av| 国产欧亚日韩视频| 在线视频 91| 老汉av免费一区二区三区| 欧美自拍视频在线| 在线精品免费视| 久久久蜜桃一区二区人| 欧美在线免费视频| 91久久国产综合久久91| 手机精品视频在线观看| 国产精品露脸自拍| 97久久人国产精品婷婷 | 欧美一区二区三区影院| 国产精品久久久久久久久免费高清 | 91视频精品| 久久精品国产亚洲精品| 国产a免费视频| 亚洲高清网站| 91成人精品网站| 69av视频在线观看| 蜜臀av性久久久久蜜臀aⅴ| 国产美女91呻吟求| 国产成人av免费看| 99精品一区二区| 日本精品一区二区三区不卡无字幕| 欧洲综合视频| 国产精品免费免费| 亚洲av综合色区| 看黄在线观看| 欧美日韩在线播放三区| 亚洲av综合色区无码另类小说| 99久久人爽人人添人人澡| 亚洲精品小视频| 麻豆一区在线观看| 影音先锋亚洲一区| 国产成人在线一区二区| 99久久免费国产精精品| 99久久国产免费看| 看电视剧不卡顿的网站| 午夜精品蜜臀一区二区三区免费| 青青草免费观看视频| 久久99精品久久久久| 国产传媒一区二区三区| 国产在线一二三区| 亚洲精品国产无套在线观| 无码人妻丰满熟妇区96| 日本成人在线网站| 亚洲精品国产精品久久清纯直播| 男人的天堂av网| 国语精品一区| 国产精品露脸自拍| 午夜美女福利视频| 成人高清视频免费观看| 日本福利一区二区三区| 50度灰在线| 欧美日韩电影一区| aa片在线观看视频在线播放| 91精品推荐| 欧美激情伊人电影| 色一情一乱一伦| 久久超碰97中文字幕| 国产精品v欧美精品∨日韩| 最新97超碰在线| 偷拍与自拍一区| 亚洲日本黄色片| 视频国产一区| 久久久在线免费观看| 国产一区二区三区在线观看| 久久亚洲精品小早川怜子| 亚洲国产一二三精品无码| 国产成人精选| 亚洲欧美日韩中文在线制服| 一区二区三区视频免费看| 国产在线播精品第三| 日韩中文字幕一区| 都市激情综合| 亚洲第一福利在线观看| 综合五月激情网| 麻豆91精品91久久久的内涵| 欧美亚州在线观看| 久久影院午夜精品| 亚洲国产三级网| 国产午夜福利一区二区| 国产成人aaa| 日本一区二区免费高清视频| 成人国产激情在线| 亚洲天堂影视av| chinese国产精品| 91在线视频播放地址| 欧美中文一区二区三区| 另类小说色综合| 西瓜成人精品人成网站| 97视频人免费观看| 日本波多野结衣在线| 亚洲一区日韩精品中文字幕| 不卡的一区二区| 欧美三级视频| 高清视频一区| 2021中文字幕在线| 91精品在线观看入口| 黄色片网站在线播放| 久久66热偷产精品| 国产又大又长又粗又黄| 欧美不卡在线观看| 欧美韩国理论所午夜片917电影| 国产黄a三级三级看三级| 亚洲综合清纯丝袜自拍| youjizz.com国产| 在线亚洲国产精品网站| 麻豆91蜜桃| 亚洲精品555| 北条麻妃久久精品| 性猛交富婆╳xxx乱大交天津| 一区二区三区视频在线观看| 香蕉视频污视频| 西西裸体人体做爰大胆久久久| 久久资源亚洲| 青青久久精品| 欧美激情亚洲自拍| 深夜福利免费在线观看| 色婷婷综合久久久中文一区二区 | 国产激情视频一区二区三区欧美| 美女在线免费视频| 国产成人精品亚洲线观看| 午夜精品一区二区三区视频免费看| 香蕉久久一区二区三区| 欧美性大战xxxxx久久久| 亚洲自拍av在线| 亚洲一区精品在线观看| 中文字幕欧美一| 97精品人人妻人人| 日韩精品免费专区| 亚洲激情免费视频| 亚洲综合小说图片| 成人免费直播live| 亚洲精华液一区二区三区| 中文字幕精品一区二区精品| 国内精品久久久久久久久久久| 黄色成人av网| 影音先锋男人资源在线观看| 粉嫩高潮美女一区二区三区| 欧美 日韩精品| 五月天久久久| 欧美高清一区二区| 日本在线视频一区二区三区| 欧美在线视频免费播放| 日本网站在线免费观看视频| 亚洲高清一二三区| 在线视频免费观看一区| 亚洲va欧美va国产va天堂影院| 免费观看a级片| 国产91富婆露脸刺激对白| 亚洲狼人综合干| 亚洲三级国产| 综合视频在线观看| 国产一区二区精品福利地址| 高清视频一区| 91亚洲精品在看在线观看高清| 欧美亚洲激情视频| 日本aa在线| 日本特黄久久久高潮| 性色av一区二区三区红粉影视| 在线观看麻豆| 国产一区二区三区18| 手机在线观看免费av| 欧美一区二区三区四区久久| 欧美日韩 一区二区三区| 亚洲高清视频的网址| 国产在线一卡二卡| 中文字幕巨乱亚洲| 日韩中文字幕电影| 成人av电影在线| 人妻精油按摩bd高清中文字幕| 日本 国产 欧美色综合| 国产熟人av一二三区| 亚洲永久免费| 拔插拔插海外华人免费| 你懂的国产精品永久在线| 亚洲国产精品久久久久久女王| 自拍偷拍精品| 欧美极品日韩| 亚洲a级精品| 99久re热视频这里只有精品6| 日韩专区视频网站| 国产精品网站入口| 视频一区在线免费看| 欧洲美女免费图片一区| 日韩欧美精品一区二区三区| 久久久久久成人| 91美女主播在线视频| 欧美激情在线观看视频| 岛国片av在线| 久久琪琪电影院| av在线加勒比| 1769国产精品| 最新中文字幕在线播放| 日韩av不卡在线| 亚洲a∨精品一区二区三区导航| 国产精品久久久av久久久| 欧美电影h版| 国产精品99久久久久久久久久久久| 手机看片国产精品| 一本一本久久a久久综合精品| 亚洲欧美日韩精品久久久| 成人嘿咻视频免费看| 欧美在线一二三区| 日韩影院二区| av中文字幕av| 精品av久久久久电影| av动漫在线看| 日韩国产欧美在线播放| 日韩在线不卡一区| 国产在线国偷精品产拍免费yy| 初高中福利视频网站| gogogo免费视频观看亚洲一| 久久久久久久久久久国产精品| 国产视频视频一区| www深夜成人a√在线| 亚洲一线二线三线视频| 国内免费精品视频| 欧美性一二三区| 精品国产伦一区二区三| 日韩成人av在线播放| 成人在线免费电影| 久久国产精品久久久| mm视频在线视频| 丁香桃色午夜亚洲一区二区三区| 97中文字幕在线| 免费视频一区| 亚洲视频在线观看一区二区三区| 免费成人在线影院| 无人码人妻一区二区三区免费| 成人爽a毛片一区二区免费| 182在线视频| 久久精品视频免费| www深夜成人a√在线| 午夜亚洲国产au精品一区二区| 日本中文字幕久久| 欧美视频一二三区| 好吊色在线观看| 亚洲成人在线视频播放| 国产成人天天5g影院在线观看| 精品国产拍在线观看| www中文字幕在线观看| 18性欧美xxxⅹ性满足| 在线国产成人影院| 91日本在线观看| 一区二区精彩视频| 日本福利一区二区三区| 欧美激情日韩| 一区二区成人网| 91欧美激情一区二区三区成人| 网站永久看片免费| 亚洲一二三区在线观看| 中文字幕在线网站| 亚洲欧美成人精品| 福利在线导航136| 成人精品一区二区三区电影免费| 特黄特色欧美大片| 男女啪啪免费观看| 久久精品国产精品亚洲红杏| 亚洲制服丝袜在线播放| 亚洲免费毛片网站| 亚洲中文字幕一区二区| 日韩久久免费电影| 青春草视频在线观看| 国产日韩欧美在线看| 日韩一级电影| 免费拍拍拍网站| 国产精品91一区二区| 国产熟妇搡bbbb搡bbbb| 亚洲综合色网站| 国产伦精品一区二区三区免费视频| 亚洲精品成a人ⅴ香蕉片| 美女三级99| 亚洲无线一线二线三线区别av| 中文字幕有码av| 欧美高清在线精品一区| 69亚洲精品久久久蜜桃小说 | 久久久综合视频| av大片免费在线观看| 精品国产麻豆免费人成网站| 麻豆系列在线观看| 91色琪琪电影亚洲精品久久| 久久中文视频| www.久久av.com| 国产精品国产三级国产a| 国产真人无遮挡作爱免费视频| 亚洲另类激情图| 欧美巨大丰满猛性社交| 精品一区久久久| 国产欧美综合一区二区三区| 国产高清成人久久| 香蕉成人啪国产精品视频综合网| 免费看黄网站在线观看| 久久久免费在线观看| 大型av综合网站| 无码专区aaaaaa免费视频| 99亚偷拍自图区亚洲| 国产情侣在线视频| 国产丝袜高跟一区| 天然素人一区二区视频| 亚洲韩国在线| 国产一区二区三区免费看| 国产女人被狂躁到高潮小说| 日韩视频在线你懂得| 午夜成年人在线免费视频| 国产精品免费一区二区三区在线观看 | 伦理一区二区| 免费看国产一级片| www欧美成人18+| 国产美女www| 中文国产成人精品| 成人h在线观看| 日韩中文在线字幕| 波多野结衣在线一区| 黄色在线视频网址| 精品国产拍在线观看| 欧美午夜激情影院| 国产欧美综合在线观看第十页| 中文字幕你懂的| 欧美精品性视频| 亚洲第一论坛sis| 亚洲一区精品视频在线观看| 亚洲一区av在线| 北岛玲一区二区三区| 国产精品久久久久久超碰| 日韩久久综合| 人妻互换一二三区激情视频| 日韩欧美视频一区二区三区| 大片免费在线观看| 欧美精品一区二区三区四区五区|