サンプル・ストア・ページ: 共通インプリメンテーション手法

サンプル・ストア・ページの大部分は、以下のインプリメンテーション手法を使用します。 このページでは例として InFashion ストアを使用しますが、すべてのサンプル・ストアに適用することができます。 個々のページに対する特定の手法の詳細については、そのページの参照ファイルを参照してください。

多文化コンテンツ

サンプル・ストア・ページは、多文化コンテンツを表示するためにも使用されます。 すなわち、同じページのセットは、幾つかの異なったロケールで使用することができます。 マルチカルチャー表示を使用可能にするコードの大部分は、getResource.jsp に入っています。 getResource.jsp は以下のことを行います。

JavaServer Pages (JSP) ファイルが上の変数をアクセスするには、 getResource.jsp は JavaServer Pages (JSP) ファイルに入っていなければなりません。 これは、コンパイル時インクルード・アクションを使用します。

<%@ include file="include/getResource.jsp"%>

getResource.jsp は、 サンプル・ストア JavaServer Pages (JSP) ファイルのほとんどすべてに入っているため、単一要求で数回実行されることがあります。 繰り返す必要がないように、このページに検索された情報の多くは、要求コンテキストに保管されています。 例:

String storeDir = (String) request.getAttribute("storeDir"); String includeDir = (String) request.getAttribute("includeDir"); String fileDir = (String) request.getAttribute("fileDir"); String bundleDir = (String) request.getAttribute("bundleDir");

String storeName = "";

if (storeDir == null) {

storeDir = sdb.getJspPath(); fileDir = sdb.getFilePath(); includeDir = storeDir + "include" + "/"; bundleDir = sdb.getDirectory(); storeName = sdb.getDescription(cmdcontext.getLanguageId()).getDisplayName(); request.setAttribute("storeName", storeName); request.setAttribute("storeDir", storeDir); request.setAttribute("fileDir", fileDir); request.setAttribute("includeDir", includeDir); request.setAttribute("bundleDir", bundleDir); }

言語特定メッセージ

「ご注文有難うございました」などの言語特定メッセージは、 リソース・バンドル・プロパティー・ファイルに保管されています。 これらのファイルは、以下のディレクトリーにあります。

drive:\WebSphere\AppServer\installedApps\WC_Enterprise_App_instance_name.ear\wcstores.war\WEB-INF\classes\storedir
drive:\Program Files\WebSphere\AppServer\installedApps\WC_Enterprise_App_instance_name.ear\wcstores.war\WEB-INF\classes\storedir
/usr/WebSphere/AppServer/installedApps/WC_Enterprise_App_instance_name.ear/wcstores.war/WEB-INF/classes/storedir
/opt/WebSphere/Appserver/installedApps/WC_Enterprise_App_instance_name.ear/wcstores.war/WEB-INF/classes/storedir

/opt/WebSphere/AppServer/installedApps/WC_Enterprise_App_instance_name.ear/wcstores.war/WEB-INF/classes/storedir
/QIBM/UserData/WebASAdv4/WAS_instance_name/installedApps/WC_Enterprise_App_instance_name.ear/wcstores.war/WEB-INF/classes/storedir

たとえば、ストア・ディレクトリーが "storedir" の場合、 英語のプロパティー・ファイルは以下のようになります。 
  drive:\drive:\WebSphere\AppServer\installedApps\WC_Enterprise_App_instance_name.ear\wcstores.war\WEB-INF\classes\storedir
\infashiontext_en_US.properties.
drive:\Program Files\WebSphere\AppServer\installedApps\WC_Enterprise_App_instance_name.ear\wcstores.war\WEB-INF\classes\storedir
/usr/WebSphere/AppServer/installedApps/WC_Enterprise_App_instance_name.ear/wcstores.war/WEB-INF/classes/storedir/infashiontext_en_US.properties.
/QIBM/UserData/WebASAdv4/WAS_instance_name/installedApps/WC_Enterprise_App_instance_name.ear/wcstores.war/WEB-INF/classes/storedir/infashiontext_en_US.properties

このファイルのコンテンツは、JSP ファイル getResource.jsp から、Java java.util.ResourceBundle API を使用して、ロードされます。 このバンドルは、変数 infashiontext として保管されます。 言語特定メッセージは以下のように表示されます。

<title><%=infashiontext.getString("REGISTER_TITLE")%></title>

コンテンツ・エンコードの設定

最近のブラウザーの多くは、UTF-8 でエンコードされた HTML データを理解します。 ただし、旧式のブラウザーの一部は、ネイティブ・エンコードしか理解できません。 たとえば、旧式の日本語ブラウザーは、"Shift_JIS" でエンコードされた HTML データしか理解できません。 この問題を解決するために、サンプル・ストアは、プロパティー名 ENCODESTATEMENT で、 リソース・バンドル・プロパティー・ファイルに言語特定のエンコード方式を指定します。 たとえば、英語プロパティー・ファイル infashiontext_en_US.properties には、以下のエントリーが入っています。

ENCODESTATEMENT = text/html; charset=ISO_8859-1

個々の JSP ファイルに応じて、エンコードは以下のとおり JSP 要求オブジェクトを使用して設定されます。

<% response.setContentType(infashiontext.getString("ENCODESTATEMENT")); %>

HTTP ヘッダーはどの HTML コンテンツよりも前に送り出されるので、JSP ファイル中でのエンコード・タイプの設定は、できるだけ早く実行する必要があります。 結果として、どの HTML コンテンツよりも後に、このコンテンツ・タイプ(HTTP ヘッダーとして送信される)を設定した場合には、所要の効果はありません。 このブラウザーは、適切なデータを表示できない可能性があります。

ヘッダー、フッター、および左のナビゲーション・フレームの組み込み

サンプル・ストア・ページのほとんどすべては、 ヘッダー (header.jsp)、フッター (footer.jsp)、 および左のナビゲーション・フレーム (sidebar.jsp) ページを表示します。 これらは、以下の実行時インクルード・ディレクティブを使用して、他の JSP ファイルに入っています。

<% String incfile;

incfile = includeDir + "header.jsp"; %> <jsp:include page="<%=incfile%>" flush="true"/>

JSP ファイルの正確な位置が分かっている場合には、以下を使用して、インクルード処理が簡単にできます。
<jsp:include page="/storedir/include/header.jsp"/>

ここで header.jsp は Web アプリケーション文書ルートの storedir ディレクトリーにあります。

関連概念

関連タスク

関連参照

IBM 著作権