ポータル URL の簡略化
![]() |
![]() |
![]() |
![]() |
ポータルやポータル デスクトップを作成する場合、ポータルのブックやページのデフォルト URL に含まれるパラメータや要素を削除して、より短い簡潔な URL を作成することができます。このトピックでは、ポータルの URL を簡略化する方法について説明します。
図 1 に、デフォルト URL のサンプルを示し、図 2 に、同じ URL の簡略化されたサンプルを示します。
図 1 デフォルト URL : http://intranet/sampleportal/appmanager/myportal/mydesktop?_nfpb=true&_pageLabel=MyPage
図 2 簡略化された URL : http://intranet/sampleportal/page/myportal/mydesktop/MyPage
注意 : このトピックでは、ブックやページがクリックされたときに生成される URL の簡略化について説明します。プレゼンテーション JSP 内のリンクに対して簡略化 URL を作成する方法を示すものではありません。
シングル ポータル ファイルとストリーミング ポータル デスクトップでは、ブックやページのデフォルト URL が異なります (『ポータル ユーザ インタフェースのフレームワーク ガイド』の「シングル ファイル モードとストリーミング モード」を参照してください)。
表 1 に、シングル ポータル ファイルとストリーミング ポータル デスクトップのデフォルト URL および簡略化された URL の例を示します。
|
||
|
最終的には、生成された長い URL がポータル フレームワークで必要になります。URL の簡略化メカニズムを設定する場合は、短い URL をフレームワークで必要な長い URL にマップする方法を指示する必要があります。このマッピングは、サーブレットで設定します。
この手順では、page
(page.jsp
) というサーブレットを Web アプリケーションのルートに作成します。この page.jsp
で、簡略化された URL と長いフレームワーク URL のマッピングを処理します。サーブレットまたは JSP には任意の名前を付けることができます。
<%
String [] thePath= request.getPathInfo().split("/");
if (thePath[1].equals("portal"))
{
request.getRequestDispatcher("/" + thePath[2]
+ ".portal?_nfpb=true&_pageLabel=" +
thePath[3]).forward(request, response);
}
else
{
request.getRequestDispatcher("/appmanager/"
+ thePath[1] + "/" + thePath[2] +
"?_nfpb=true&_pageLabel=" +
thePath[3]).forward(request, response);
}
%>
このコードでは、サーブレットで受信した URL を各フォワード スラッシュ (/) の位置で分割し、URL がシングル .portal
ファイルであるか、ストリーミング ポータルであるかを検出し、簡略化された URL を再配置してフレームワークに必要な長い URL にします。
サーブレットを作成したら、次の手順に従って、サーブレットが作成されたこをサーバに示す必要があります。
<servlet>
<servlet-name>page</servlet-name>
<jsp-file>page.jsp</jsp-file>
</servlet>
このエントリは、page
というサーブレットが存在することをサーバに対して示します。このサーブレットは、ポータル Web プロジェクトのルートにある page.jsp
ファイルです。
web.xml
の servlet-mapping セクションに、コード リスト 3 のエントリを追加します。
<servlet-mapping>
<servlet-name>page</servlet-name>
<url-pattern>/page/*</url-pattern>
</servlet-mapping>
このエントリは、/page/*
を含む URL をユーザがクリックしたときは必ず page
サーブレットを使用するようにサーバに指示します。以下の手順では、このパターンを使用して URL を作成します。
ユーザは、メニューにあるブックやページのリンクを使用してポータル内を移動します。ポータル フレームワークでは、メニュー スケルトン ファイルを使用してブックやページのリンクが動的に構築されます。この手順では、メニュー スケルトンを変更して新しい簡潔な URL を生成します。新しい URL は、ユーザがブックやページのリンクをクリックしたときにブラウザのアドレス フィールドに表示されます。
この手順は、デフォルト スケルトンのシングルレベル メニューとマルチレベル メニューでの簡略化 URL に対応します。
注意 : この手順で実装する URL の簡略化は、デフォルト スケルトン (少なくともデフォルトの submenu.jsp
と singlelevelmenu.jsp
スケルトン ファイル) を使用するすべてのルック アンド フィールでサポートされます。ただし、独自の submenu.jsp
と singlelevelmenu.jsp
ファイルを持つ新しいスケルトンをルック アンド フィールで使用する場合は、それらのスケルトンに対してもこの手順を繰り返す必要があります。スケルトンの詳細については、WebLogic Workshop ヘルプ システムの「スケルトンおよびスケルトン テーマを作成する」を参照してください。
singlelevelmenu.jsp
スケルトン ファイルは、最上位のブックおよびページへのリンクを生成します。この手順では、デフォルト スケルトンの singlelevelmenu.jsp
ファイルを変更します。
<portalWebProject>/framework/skeletons/default/singlelevelmenu.jsp
.
com.bea.netuix.servlets.manager.AppContext
BookPresentationContext book = BookPresentationContext.getBookPresentationContext(request);
その行の真上に、コード リスト 4 のコードを貼り付けます。
String shortpath = "";
String [] path = request.getRequestURI().split("[/.]");
if (AppContext.getAppContext(request).isDotPortal())
{
shortpath = request.getContextPath() + "/page/" + path[3] + "/" + path[2] +
"/";
}
else
{
shortpath = request.getContextPath() + "/page/" + path[3] + "/" + path[4] +
"/";
}
このコードでは、URI を各フォワード スラッシュとドット ([/.]) の位置で分割し、URL がシングル .portal
ファイルであるかストリーミング ポータルであるかを検出し、URL を再配置して簡略化されたフォーマットを使用します。たとえば、sample.portal
と呼ばれる .portal
ファイルの場合、分割によって sample
と portal
という断片が作成され、新しい簡略化された URL では、これらの断片が portal/sample
として再配置されます。簡略化された URL は、変数 shortpath
に割り当てられます。
コード リスト 5 singlefilemenu.jsp のコード ブロック
else
{
if (inactiveImage == null)
{
%><li class="<%= menuItemClass %>"><a href="<render:pageUrl pageLabel="<%=
"><%= pageCtx.getTitle() %></a></li><%
pageCtx.getDefinitionLabel() %>"/>
}
else if (rolloverImage == null)
{
%><li class="<%= menuItemClass %>"><a href="<render:pageUrl pageLabel="<%=
"><img src="<%= inactiveImage %>"></a>
pageCtx.getDefinitionLabel() %>"/>
</li><%
}
else
{
%><li class="<%= menuItemClass %>"><a href="<render:pageUrl pageLabel=
"><img src="<%= inactiveImage
"<%= pageCtx.getDefinitionLabel() %>"/>
%>" longDesc="<%= rolloverImage %>"></a></li><%
}
}
このコードでは、ナビゲーション用の画像、ロールオーバ画像、またはテキストを使用するブックおよびページのリンクを生成します。
href
の値を、次のコードに置き換えます。
<%= shortpath + childPageCtx.getDefinitionLabel() %>
submenu.jsp
スケルトン ファイルは、最上位のブックおよびページ リンクの下のブックおよびページへのリンクを生成します。この手順では、デフォルト スケルトンの submenu.jsp
ファイルを変更します。submenu.jsp
スケルトン ファイルの変更は、前の手順の singlelevelmenu.jsp
の変更とほぼ同じです。
<portalWebProject>/framework/skeletons/default/submenu.jsp
.
com.bea.netuix.servlets.manager.AppContext
if (!bookCtx.isHidden()
その行の真上に、コード リスト 6 のコードを貼り付けます。
String shortpath = "";
String [] path = request.getRequestURI().split("[/.]");
if (AppContext.getAppContext(request).isDotPortal())
{
shortpath = request.getContextPath() + "/page/" + path[3] + "/" + path[2] +
"/";
}
else
{
shortpath = request.getContextPath() + "/page/" + path[3] + "/" + path[4] +
"/";
}
コード リスト 7 submenu.jsp のコード ブロック
<a class="<%= menuItemLinkClass %>" href="<%=PageURL.createPageURL(request, response, childPageCtx.getDefinitionLabel()).toString() %>"><%=childPageCtx.getTitle() %></a>
href
の値を、次のコードに置き換えます。
<%= shortpath + childPageCtx.getDefinitionLabel() %>
ポータル フレームワークでは、訪問者に表示されるブックやページのタイトルではなく、ブックやページの URL にあるブックやページの定義ラベルが使用されます。ブックやページの定義ラベルは、訪問者がブックやページをクリックしたときに、Web ブラウザのアドレス バーに表示されます。
たとえば、ユーザには「My Page」 (タイトル) というページが表示されますが、ユーザが [My Page] をクリックすると、アドレス バーの URL の末尾は「/page_2」 (定義ラベル) になります。URL の定義ラベルをブック名やページ名のテキストに変更して表示することができます。
WebLogic Administration Portal のポータル ファイルをテンプレートとして使用して、ストリーミング ポータル デスクトップを作成することもできます。デスクトップを作成したら、デスクトップを表示し、ブックやページ間を移動して簡略化された URL を確認してください。
詳細については、WebLogic Administration Portal ヘルプ システムの「デスクトップを作成する」を参照してください。
![]() |
![]() |
![]() |