kapok

          垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            455 隨筆 :: 0 文章 :: 76 評(píng)論 :: 0 Trackbacks

          摘要http://dev2dev.bea.com.cn/techdoc/wlportal/200409255.html

          WebLogic Portal 8.1 Service Pack 2已經(jīng)面世幾個(gè)月了。到本文發(fā)表時(shí),Service Pack 3可能也會(huì)面世。我利用該版本完成了幾個(gè)WebLogic Portal項(xiàng)目,這期間我碰到了幾個(gè)大大小小的問(wèn)題。

          作者:Kunal Mittal

          WebLogic Portal 8.1 Service Pack 2已經(jīng)面世幾個(gè)月了。到本文發(fā)表時(shí),Service Pack 3可能也會(huì)面世。我利用該版本完成了幾個(gè)WebLogic Portal項(xiàng)目,這期間我碰到了幾個(gè)大大小小的問(wèn)題。

          本文將提供幾個(gè)技巧和竅門來(lái)解決這些問(wèn)題,并附上合適的代碼片斷幫助門戶(Portal)開(kāi)發(fā)人員。請(qǐng)注意這幾個(gè)代碼片斷可在BEA新聞組和/或作為BEA WebLogic Portal示例的部分中找到,BEA WebLogic Portal示例是與WebLogic Platform下載一同發(fā)布的。不過(guò) ,我已經(jīng)摘錄了這些代碼片斷中的大部分并對(duì)其進(jìn)行了修改,以適應(yīng)我將要在本文中使用的用例。讓我們開(kāi)始吧……

          技巧 1:登錄門戶
          BEA
          示例箱提供了幾個(gè)登錄例子。選擇登錄類型時(shí),有幾件事情要牢記在心:您想支持使用cookie的自動(dòng)登錄、使用控制器或備份文件的登錄嗎?有一件事要記著,您在登錄后總是希望更新門戶,這樣才能獲得利益。有兩個(gè)示例值得關(guān)注,就是位于指南門戶目錄下的AutoLoginBacking.java LoginBacking.java文件。我喜歡為登錄過(guò)程使用備份文件,這樣就可以執(zhí)行自動(dòng)登錄和其他的登錄核對(duì)而無(wú)需考慮用戶標(biāo)記的確切頁(yè)的URL。表1顯示了AutoLoginBacking.java。我已經(jīng)采用了BEA提供的原始AutoLoginBacking.java,并將其與LoginBacking.java合并。在刪除有關(guān)注銷的cooky時(shí)我碰到了一些問(wèn)題。在本例中您將看到一個(gè)完整的工作實(shí)現(xiàn)(本文的代碼可在www.sys-con.com/weblogic/sourcec.cfm中找到)。

          技巧2:利用Portlet Maximize Minimize工作

          您將經(jīng)常感覺(jué)到有必要控制portlet的最大化和最小化行為。我將為您展示一個(gè)代碼片斷,對(duì)該代碼片斷進(jìn)行適當(dāng)?shù)恼{(diào)整,就可用于幾乎所有需要的場(chǎng)景。讓我們先看一下代碼,然后我將討論在何時(shí)、何處使用這段代碼。

          首先您需要做的是獲得一個(gè)PortletBackingContext

          PortletBackingContext context =
          PortletBackingContext.getPortletBackingContext(request);

          在上下文對(duì)象上,您可以做一些事情,比如修改模式(View Mode Edit Mode),或修改狀態(tài)(NormalMinimized Maximized)。您將需要這樣的代碼:

          context.setupModeChangeEvent(WindowCapabilities.VIEW.getName());
          context.setupStateChangeEvent(WindowCapabilities.MAXIMIZED.getName());

          您也可以編程來(lái)隱藏按鈕。例如,為了隱藏最大化按鈕,可使用如下代碼:

          context.setCapabilityVisible(WindowCapabilities.MAXIMIZED, getName(), false);

          上面所展示的是您在利用portlet的狀態(tài)、模式和可視性工作時(shí)所需要的所有代碼行。我已經(jīng)將其用于備份文件和控制器。例如,考慮如下的用例:

          1.       您有4個(gè)頁(yè)面,每個(gè)頁(yè)面有一些portlet。比如說(shuō)用戶位于Page 1,并且他們將Portlet最大化。接著他們轉(zhuǎn)到Page 2。當(dāng)他們回到Page 1時(shí),默認(rèn)情況下已經(jīng)最大化的Portlet仍將保持最大化。如果希望恢復(fù)該頁(yè)面,那么您需要使用一個(gè)位于頁(yè)面或Portlet級(jí)的備份文件。

          2.       您已經(jīng)在Portlet標(biāo)題欄上啟用了EDIT按鈕。如果您希望編輯頁(yè)始終以最大化視圖的方式顯示,那么您仍然需要備份文件。在這種情況下,您需要檢查模式,如果模式為EDIT,那么您需要將porlet最大化,類似地,如果模式為VIEW,則您需要將portlet恢復(fù)到其最初的狀態(tài)。

          3.       您不希望將最大化按鈕顯示給用戶,但您仍然支持上面的兩種用例。在這種情況下,您無(wú)法關(guān)閉最大化功能,但是您可以使用上述代碼隱藏圖標(biāo)。

          4.       您也可在控制器的beforeAction() afterAction()方法中使用該代碼,以便控制portlet的行為。

          技巧3:為控制器刷新Action

          Service Pack 2中發(fā)布了一個(gè)補(bǔ)丁,每次刷新頁(yè)面時(shí),該補(bǔ)丁可強(qiáng)制控制器重新執(zhí)行。沒(méi)有該補(bǔ)丁,在刷新時(shí)控制器就不會(huì)執(zhí)行(補(bǔ)丁編號(hào)為CR129301,來(lái)自BEA)。本人推薦您下載這個(gè)補(bǔ)丁,因?yàn)槟鷮缀醮_定無(wú)疑地需要它。該補(bǔ)丁有希望成為Service Pack 3的一部分。

          技巧4SR 168 Portlet中的IconUrl

          您無(wú)法使用WebLogic Workshop中的iconUrl特性來(lái)為JSR 168 portlet設(shè)置標(biāo)題欄中的圖形。您需要編輯weblogic-portlet.xml文件來(lái)完成這項(xiàng)工組。請(qǐng)參見(jiàn)下面的代碼片斷。

                  <portlet>

                       <portlet-name>myPortlet</portlet-name>

                      <supports>

                           <mime-type>text/html</mime-type>

                          <titlebar-presentation>

                                  <id>jsr-titlebar</id>

                                 <icon-url>window-icon.gif</icon-url>

                         </titlebar-presentation>

                     </portlet>

          技巧5DotPortal 與流動(dòng)模式

          這些模式的基本不同之處在于,您是要從那些在EAR中綁定的XML文件中還是要從數(shù)據(jù)庫(kù)中讀取門戶定義。在流動(dòng)模式中部署,以便為portlet定義權(quán)利是一個(gè)不錯(cuò)的主意。并且,在流動(dòng)模式中您可以動(dòng)態(tài)地控制portlet的布局、外觀和感覺(jué)以及其他的類似用戶屬性。

          從開(kāi)發(fā)的觀點(diǎn)來(lái)看,這里真正的技巧在于保持所有URL的關(guān)系。在流動(dòng)模式中,所有的URL都將改變,因此您需要注意這一點(diǎn)。這里有一個(gè)代碼片斷,可以使用它檢查您是處于DotPortal還是流動(dòng)模式。

          <%@ page import="com.bea.netuix.servlets.manager.AppContext"%>

                  if (session.getAttribute("DOT_PORTAL") == null)

                  {

                      AppContext appContext = AppContext.getAppContext(request);

                      if (appContext.isDotPortal())

                      {

                          session.setAttribute("DOT_PORTAL", new Boolean(true));

                      }

                      else

                      {

                          session.setAttribute("DOT_PORTAL", new Boolean(false));

                      }

                  }

          結(jié)束語(yǔ)

          本文針對(duì)我在建立門戶應(yīng)用程序的過(guò)程中碰到的常見(jiàn)問(wèn)題,提供了一些簡(jiǎn)單的技巧和竅門。這些技巧和竅門中有很多與那些應(yīng)該成為Service Pack 3一部分的補(bǔ)丁和bug有關(guān)。其他的則是一些基于您特定的用例的簡(jiǎn)單調(diào)整。

          關(guān)于作者

          Kunal MittalWeb服務(wù)和面向服務(wù)的架構(gòu)的實(shí)現(xiàn)和策略顧問(wèn)。他與其他人共同編著和撰寫了幾本Java、WebLogic Web 服務(wù)方面的書籍。(更多

          源代碼

          Source Code - Zip file

          posted on 2005-04-22 22:10 笨笨 閱讀(335) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE 、ALL 、Weblogic Portal
          主站蜘蛛池模板: 上饶县| 北流市| 无极县| 恩施市| 台北市| 金山区| 云和县| 丹巴县| 资阳市| 江安县| 灌阳县| 绥宁县| 灯塔市| 赫章县| 阜阳市| 庆城县| 小金县| 太谷县| 南岸区| 若羌县| 东至县| 奉节县| 彭阳县| 凤城市| 滨州市| 志丹县| 苗栗县| 杭州市| 宁远县| 台山市| 永胜县| 雷波县| 合水县| 罗甸县| 浪卡子县| 易门县| 红原县| 霍山县| 大港区| 榕江县| 唐河县|