Web トランザクションによる JavaServer Pages の使用

VGUIRecord ソース・ファイルを保存すると、VGUIRecord パーツのフィールドに基づいて、デフォルトの JSP ファイルが作成されます。このデフォルトの JSP を編集して、JSP の外観や JSP に表示されるデータを変更することができます。JSP テクノロジーの詳細については、 「JavaServer Pages (JSP) テクノロジー

JavaServer Pages (JSP ファイル) は、.jsp 接尾部を持ち、HTML タグと JSP 構文が混在する ASCII ファイルです。Web アプリケーション・サーバーでは、ページ・コンパイルとして知られる処理によって、JSP ファイルは Java™ サーブレットに変換されます。

スクリプトレット

スクリプトレットと呼ばれる Java コードの断片を、JSP ファイルに挿入することができます。スクリプトレットは、JSP ソースの任意の場所に配置することができます。実行時に、スクリプトレットの Java コードはサーバー・サイドで実行されますが、Java コード自体はブラウザーに送信される HTML に組み込まれません。UI レコード Bean に固有のメソッドは、UI レコード Bean API に説明があります。

以下のコードは、シンプルなスクリプトレットを表しています。

<% if (x == 1) {out.println(EMPNO.getLabel())}; %>

スクリプトレットの Java コードは、ストリングを out PrintWriter オブジェクトに出力することで、HTML に追加できます。この out オブジェクトは、JSP のページ・コンパイル処理の一部として作成され、スクリプトレットで使用できるようになります。out オブジェクトはストリングのみを受け入れます。ストリング・タイプ以外のものを出力する必要がある場合、最初にそのタイプをストリングに変換する必要があります。

out オブジェクトに出力する方法は 3 つあります。

<% out.print(string_value); %>
このスクリプトレットにより、ストリング string_value がスクリプトレットの位置にある HTML コードに追加されます。
<% out.println(string_value); %>
このスクリプトレットにより、ストリング string_value がスクリプトレットの位置にある HTML コードに追加され、その後、紙送り制御文字が追加されます。紙送り制御文字を追加すると、次の HTML コードが次の行から始まり、ソース・コードが読みやすくなります。この復帰文字は、ブラウザーの HTML の外観に影響を与えず、HTML <br> タグの効果を持っていません。
<% string_value %>
このスクリプトレットは <% out.print(string_value); %> に相当します。

このように、スクリプトレットにより VGUIRecord のデータにアクセスし、ページ上でそのデータを使用することができます。UI レコード Bean にアクセスする固有のメソッドに関しては、UI レコード Bean API を参照してください。

Bean タグ

VGUIRecord と連動して作成された JSP ファイルは、UI レコード Bean を参照します。この UI レコード Bean により、JSP のスクリプトレットは VGUIRecord のデータへのアクセス権限が与えられます。JSP ファイルは、<jsp:useBean> タグでこの Bean を参照します。

例えば、以下のコードは JSP ファイル内で使用されている、Bean への参照を表したものです。

<jsp:useBean id="referenceName" 
class="beanClassName" 
type="interfaceName" 
scope="beanScope" />
referenceName
Bean の名前。JSP ファイルの他のスクリプトレットは、<jsp:useBean> タグで定義された名前を参照することで、この Bean を使用することができます。
beanClassName
java.lang.String などの Bean の完全修飾クラス名。
interfaceName
Bean によってインプリメントされたインターフェース。この属性はオプションです。
beanScope
Bean のスコープ。有効な値は以下のとおりです。
session
Bean は HttpSession オブジェクトに保存されます。
request
Bean は HttpServletRequest オブジェクトに保存されます。
page
Bean は JSP ページ・コンテキストに保存されます。
application
Bean はサーブレット・コンテキストに保存されます。

ディレクティブ

また、JSP ファイルに JSP ディレクティブを組み込むこともできます。 以下の 2 つのディレクティブは、Web トランザクションを処理するときに重要です。

import ディレクティブによって、Java import ステートメントを追加することができます。これらの import ステートメントは、JSP のどのスクリプトレットにも適用されます。Java import ステートメントは、パッケージの内部の要素を参照するときに、あらゆる場所のパッケージの完全修飾名を入力する手間を省くことのできる簡略表記です。

以下の import ディレクティブを、VGUIRecord を処理するために 作成された JSP ファイルごとに追加します。

<%@ page import = "com.ibm.vgj.uibean.VGDataElement" %>

errorPage ディレクティブは、キャッチされていない例外に 応答してブラウザーを転送する Web ページを指定します。例えば、UI レコード JSP が、UI レコード Bean への呼び出しで誤った配列添字を指定した場合、errorPage ディレクティブで指定された JSP がエラーを処理します。

たとえ CSOERRORUIR.jsp が、TCP/IP 通信の問題および Web トランザクションの内部の問題について報告するために、カスタマイズするエラー・ページであっても、errorPage ディレクティブで CSOERRORUIR.jsp を指定しないでください。 すべてのエラーを CSOERRORUIR.jsp によって表示する場合は、errorPage="vagen1error.jsp" を指定します。

以下の例は、errorPage ディレクティブを示したものです。

<%@ page errorPage="jspName.jsp" %>

フィードバック