5. カスタマイズ

フェーズに関連づけるHTMLの作成や、自動生成ソースのカスタマイズに関するノウハウを説明します。


5.1. HTMLの作成

APAgentオブジェクトの変数名を自由に設定する

<%-- APAGENT_n_IS 変数名 --%>というコメントを出力用HTML(JSP)ファイルに記述することにより、フェーズに割り当てるメソッドに対応するAPAgentオブジェクトの変数名を自由に設定することができます。

<%-- APAGENT_n_IS 変数名 --%>
n : フェーズに割り当てるメソッドの順番に対応する1からの連番 変数名 : n番目のメソッドに対応するAPAgentオブジェクトの変数名 (変数名はJavaの命名規則に従います。 ただし、WebAP JSPの予約語は使用しないでください。)

JSP開発ツールでJSP生成した場合には、メソッドに対応するAPAgentオブジェクトの変数名は、jspAgent_メソッド名となりますが、事前カスタマイズでAPAgentオブジェクトから値を取得する処理を記述する場合には、メソッド名を特定しなければならない変数名を使用するのは不便です。 そのため、フェーズに設定するメソッドの順番に合わせて変数名を自由に設定できるようにしました。

記述例(INPUTタグText1とText2に同じ値を表示します)
JSP生成前
<%-- APAGENT_1_IS agent --%>
	        :
<INPUT NAME="Text1" TYPE="text" VALUE="">  <- ここはJSP開発ツールでマッピング
<INPUT NAME="Text2" TYPE="text" VALUE="<%= agent.param1%>">  <- ここは事前カスタマイズ
JSP生成後
<%-- APAGENT_1_IS agent --%>
	        :
<% proj.tran.classes.stub.ifname_Method1_APAgentSub jspAgent_Method1
    = (proj.tran.classes.stub.ifname_Method1_APAgentSub)param.getAPAgent("Method1"); %>
<% proj.tran.classes.stub.ifname_Method1_APAgentSub agent = jspAgent_Method1; %>
	        :
<INPUT NAME="Text1" TYPE="text" VALUE="<%= jspAgent_Method1.param1%>">
<INPUT NAME="Text2" TYPE="text" VALUE="<%= agent.param1%>">
	        :
注意
  • このコメントのみで一行が構成されていなければなりません。
  • このコメントはHTML(JSP)ファイルのどこに記述してもかまいません。

テーブル内にサーバAPの実行結果を修飾したテキスト文字で表示

サーバAPのメソッドの出力引数または戻り値を、列マッピングしたテーブルに、修飾したテキスト文字で表示したい場合は、TDタグの中に修飾用のHTMLタグを記述してください。

<TD>〜</TD>の間にマッピング可能なHTMLタグの記述がない場合、列マッピングしたデータは、<TD>〜</TD>の間に出てくる最初の終端タグの前に出力されます。

下記の記述例の場合は、「引数設定」ダイアログで 名前を出力引数または戻り値に列マッピングすることにより、実行時に出力引数または戻り値の値が </i>タグの前にテキスト文字として出力されます。このため緑色の斜体文字として表示されます。
同様に、住所を列マッピングした場合は、</b>タグの前に出力されるので、太字で表示されます。

記述例
<table border="1">
<tr>
<th>名前</th>
<th>住所</th>
</tr>
<tr>
<td><font color=green><i></i></font></td>
<td><b></b></td>
</tr>
</table>

テーブルの見出し行にサーバAPの実行結果を表示

サーバAPのメソッドの出力引数または戻り値を、テーブルの見出し行に表示したい場合は、NAME属性値のない見出し行だけのテーブルを用意し、THタグの中にOTXJSPKEYタグを記述してください。

下記の記述例の場合は、「引数設定」ダイアログで JSPKEY1を出力引数または戻り値にマッピングすることにより、実行時に出力引数または戻り値の値が OTXJSPKEYタグの後ろにテキスト文字として出力されます。このためテーブルの見出しとして表示されます。
また、VAL_Aを出力引数または戻り値にマッピングすることにより、JSPKEY1にマッピングした見出しに対応するデータを表示することができます。

記述例
<form>
<table border="1">
<tr><td>
  <table border="1" width="100%">
  <tr>
    <th width="50%"><OTXJSPKEY name="JSPKEY1"></th>
    <th width="50%"><OTXJSPKEY name="JSPKEY2"></th>
  </tr>
  </table>
</td></tr>
<tr><td>
  <table border="1" width="100%">
  <tr>
    <td width="50%"><input type="text" name="VAL_A" size="20"></td>
    <td width="50%"><input type="text" name="VAL_B" size="20"></td>
  </tr>
  </table>
</td></tr>
</table>
</form>

 

 

サーバAPの実行結果をテキスト文字で表示

サーバAPのメソッドの出力引数または戻り値を INPUTタグではなくテキスト文字として表示したい場合は、OTXJSPKEYタグを使用してください。

OTXJSPKEYタグは、WebAP JSP 独自のタグであるため、Webブラウザで表示する場合には OTXJSPKEYタグそのものは無視されます。環境設定での指定により OTXJSPKEYタグを生成JSPに出力しないようにすることもできます。

下記の記述例の場合は、「引数設定」ダイアログで ADDRESS を出力引数または戻り値に マッピングすることにより、実行時に出力引数または戻り値の値が OTXJSPKEYタグの後にテキスト文字として出力されます。

記述例
<OTXJSPKEY NAME="ADDRESS">

 

URL等からフェーズ実行

HTML(JSP)ファイルをカスタマイズして、ハイパーリンクやJavaScriptでフェーズのURLを指定することにより、次のフェーズを実行することが可能です。

URLの記述形式は、以下のとおりです。(/OTXJSP/RUN以降)

/OTXJSP/RUN?JSPPRO=プロジェクト名&JSPTR=トランザクション名&JSPPHASE=フェーズ名&JSPNAME=JSPファイル名&JSPCOUNT=<%= param.count %>

JSPファイル名とは、当該HTML(JSP)ファイルを元にJSP開発ツールで作成するJSPファイルの名前です。命名規則は以下のようになります。
HTML(JSP)ファイル中にフォームが複数あり、2番目以降のフォームから実行する場合は、以下の後に":フェーズを実行するフォームの番号(記述順に1から数えた番号)"を追加してください。

フェーズ名_フェーズ設定で出力先として指定したHTML(JSP)ファイル名.jsp

JSP開発ツールで作成したJSPファイル中に、フォームごとに"JSPNAME"というNAME属性値のhidden属性のINPUTタグの記述が追加されます。JSPファイル名が、そのINPUTタグのVALUE属性値と同じ値になっていることを確認してください。

注意:JSPNAME、JSPCOUNTを指定しない場合、フェーズの遷移チェックが正しく行われないことがあります。
また、JSPNAMEを指定しない場合、サーバAPの入力パラメータに正しい値を設定できないことがあります。

下記はJavaScriptに記述する場合の例です。
2番目のフォームのボタンをクリックするとフェーズp2を実行し、新しいウィンドウにフェーズ実行結果を表示します。

記述例
<SCRIPT Language="JavaScript">
function open_window(){
	alert('送信します')
	window.open('/OTXJSP/RUN?JSPPRO=Proj1&JSPTR=Tran1&JSPPHASE=p2&JSPNAME=p1_p1.jsp:2&JSPCOUNT=<%= param.count %>','window2');
}
</SCRIPT>

<FORM >
<INPUT TYPE="text" NAME="Frm1_text_1" SIZE=20>
</FORM>

<FORM >
<INPUT TYPE="text" NAME="Frm2_text_1" SIZE=20>
<INPUT NAME="Frm2_button" TYPE="button"VALUE="送信button" onClick="open_window()">
</FORM>
 

実行時にテーブルのセルの属性を変更

実行時にテーブルのセルの背景色などの属性を変更したい場合は、TABLEタグにNOTBLMAP属性(WebAP JSP固有の属性)を指定し、TDタグ中のOTXJSPKEYタグとサーバAPのパラメータをマッピングしてください。
TDタグの他、TRタグ、THタグ中に記述したOTXJSPKEYタグも同様にサーバAPのパラメータとマッピング可能です。

NOTBLMAP属性を指定したテーブルは、セル単位のマッピングのみ可能となり、TABLE全体マッピング、列単位マッピングはできません。
NOTBLMAP属性を指定したテーブル内に入れ子になっているテーブルがある場合は、内側のテーブルについても、セル単位のマッピングのみ可能となります。外側のテーブルにNOTBLMAP属性の指定があれば、入れ子になっている内側のテーブルにはNOTBLMAP属性を指定する必要はありません。

下記の記述例の場合は、「引数設定」ダイアログで TDタグ中のP1_Mを出力引数または戻り値にマッピングすることにより、実行時にセルの背景色を変更することができます。

記述例
<TABLE NOTBLMAP>
  <TR>
    <TD BGCOLOR="<OTXJSPKEY NAME=P1_M>"><INPUT TYPE="TEXT"  NAME="P1" SIZE="20">
    </TD>
  </TR>
</TABLE>

注意:

 

HTML作成の注意点

HTML(JSP)ファイルを作成するときには、次の点に注意してください。

5.2. フェーズJavaソースファイル

フェーズJavaソースの作成と格納場所

フェーズ処理を行うJavaソースファイルは、JSP開発ツールで自動的に作成します。作成したソースファイルは、以下の場所にあります。

JSP開発ディレクトリ/project/プロジェクト名/トランザクション名/sources/フェーズ名.java

JSP開発ツールからソース生成を行ったときにフェーズJavaソースファイルに上書きすると、カスタマイズした情報は削除されます。
カスタマイズした情報をフェーズJavaソースファイル更新後にも使用したい場合には、カスタマイズした内容を別ファイルに保存するなどの対応が必要です。

 

カスタマイズ可能な範囲

フェーズJavaソースファイル中でカスタマイズが不可能な部分は以下のように
「// ------- fixed area start -------」
「// ------- fixed area end ------- 」
で区分けしています。

例:
// ------- fixed area start -------
//出力データ管理オブジェクト作成
OTXJSPResultRel1  jspresult = preOTXJSPResult;
if(jspresult == null){
	jspresult = new OTXJSPResultRel1();
}
// ------- fixed area end -------

この範囲に含まれていないソースについてカスタマイズを行ってください。範囲内に含まれるソースを修正する必要がある場合には、修正による影響を十分考慮のうえ行ってください。

 

カスタマイズ可能なメソッド

作成後のJavaソースファイルを、入力データおよび出力データについてユーザが直接カスタマイズすることができます。カスタマイズできるのは、ソースファイル中の以下のメソッド内の特定の記述のみです。その他のソースコードは変更しないでください。

メソッド名 説明
public WebOTXJSPBean execute(
  Object com,
  HttpServletRequest req,
  HttpServletResponse res,
  String host,
  OTXJSPResultRel1 preOTXJSPResult,
  PhaseExecInfo pInfo
) throws JServletException
Webブラウザからの情報の取得、サーバAPのメソッドの実行、出力に使用するJSPファイルの指定などの処理を行います。
private void setInputParam_jspAgent_
カウンタ_メソッド名_出力JSPファイル名(
  APAgentのクラス名 jspAgent_メソッド名,
  HttpServletRequest req,
  String jspCode
)throws JServletException
executeメソッドから呼び出されて、Webブラウザから入力情報を取得し、APAgentのクラスインスタンスに設定する処理を行います。

当メソッドは、フェーズに設定されているメソッドと前画面の出力JSPファイルの組み合わせごとに存在します。

JSP開発ツール起動時のJavaVMのオプションで、-Dwebapjsp.phasestate=1を指定しているときは、executeメソッドの形式は以下のようになります。JavaVMのオプションについては、「WebAP JSP Developer 固有のJavaVMのオプション」を参照してください。

メソッド名 説明
public WebOTXJSPBean execute(
  Object com,
  HttpServletRequest req,
  HttpServletResponse res,
  String host,
  OTXJSPResultRel1 preOTXJSPResult
) throws JServletException
Webブラウザからの情報の取得、サーバAPのメソッドの実行、出力に使用するJSPファイルの指定などの処理を行います。

タイムアウトフェーズのカスタマイズについては、「カスタマイズ例3(タイムアウトフェーズのカスタマイズ)」を参照してください。

 

カスタマイズ例1 (INPUTタグに表示されている文字列をメソッドの入力引数に設定)

WebAP JSPでは、サーバAPのメソッドの入力引数に値を設定する場合、APAgentクラスのメンバ変数に値を設定します。WebAP JSPでは自動生成したフェーズソースのexecuteメソッドでAPAgentクラスのインスタンスを生成しています。APAgentクラスのインスタンスはjspAgent_メソッド名の変数に設定しています。
INPUTタグのNAME属性値ADDRESSから取得した文字列をサーバAPのメソッドの入力引数(string型)に指定する場合の例を示します。

ADDRESSの値を JavaServlet API である getParameter メソッドにより取得し、入力引数に設定するには、APAgentクラスのメンバ変数に値を設定します。メンバ変数の名前はIDLで定義したメソッドのパラメータ名となります。以下のようにカスタマイズします。

jspAgent_メソッド名.入力引数名 = CodeConv.changeCode(req.getParameter("ADDRESS"), jspCode);
 (jspCode:通信管理から取得した文字コード種別)

INPUTタグのNAME属性値VINTAGEから取得した文字列をサーバAPのメソッドの入力引数(long型)に指定する場合の例を示します。

jspAgent_メソッド名.入力引数名 = DataConv.changeStrToInt("VINTAGE",req.getParameter("VINTAGE"));

入力引数に値を設定する処理をカスタマイズする場合は、以下のことに注意してください。

自動生成されたフェーズJavaソース内の入力引数に値を設定する処理を削除すると、不正な値が送信されたり、メソッドの実行に失敗する場合があります。

 

カスタマイズ例2 (デバッグトレースを出力)

フェーズJavaソース中のデバッグトレースに情報を出力したい箇所で、以下のいずれかの形式でカスタマイズコードを追加してください。

形式1
  Trace.println(Trace.TRACE_LEVEL_1,"デバッグメッセージ");
  
形式2
  if(Trace.getLevel() >= Trace.TRACE_LEVEL_1){ 
     Trace.println("デバッグメッセージ");
  }
  

WebAP JSPでトレースを取得するように設定している場合、カスタマイズしたフェーズが実行されると、トレースログに「デバッグメッセージ」で指定した内容を出力します。

 

カスタマイズ例3 (タイムアウトフェーズのカスタマイズ)

タイムアウトフェーズが実行される契機は、セッション解放契機と同じです。タイムアウト時だけでなく、別のトランザクションに切り替わる場合も、タイムアウトフェーズが実行されます。
タイムアウトフェーズ中で業務の終了処理を行いたいが、トランザクション切り替わり時には終了処理を行いたくないといった場合には、タイムアウトフェーズの実行契機を判断して処理を切り分けてください。
タイムアウトフェーズの実行契機は、executeメソッドのreqパラメータ、resパラメータの値により判断できます。詳細はexecuteメソッドを参照してください。

また、トランザクション切り変わり時に、次に実行するトランザクションを判断して特定の処理を行うようにカスタマイズすることもできます。
以下にカスタマイズの例を示します。

public WebOTXJSPBean execute(Object  com, HttpServletRequest  req, HttpServletResponse res,
String host, OTXJSPResultRel1 preOTXJSPResult, PhaseExecInfo pInfo)
throws JServletException{ --------------
//トランザクション切り替わり時以外のときに終了処理を行う if((req == null) && (res == null)){ //終了処理を記述 } --------------
//次のトランザクションがプロジェクトProj1、トランザクションTran1のとき特定処理を行う if(req != null){ String nextproj = req.getParameter("JSPPRO"); String nexttran = req.getParameter("JSPTR"); if((nextproj.equals("Proj1")) && (nexttran.equals("Tran1"))){ //特定処理を記述 } } -------------- }

 

5.3. JSPファイル

JSPファイルの作成と格納場所

フェーズ処理を実行した結果を出力するJSPファイルは、JSP開発ツールで自動的に作成します。作成したJSPファイルは、以下の場所にあります。

JSP開発ディレクトリ/jsp/プロジェクト名/トランザクション名/*.jsp

JSP開発ツールからJSP生成を行ったときにJSPファイルに上書きすると、カスタマイズした情報は削除されます。
カスタマイズした情報をJSPファイル更新後にも使用したい場合には、カスタマイズした内容を別ファイルに保存するなどの対応が必要です。

 

カスタマイズ可能な範囲

JSPファイル中でカスタマイズが不可能な部分は以下の行記述で囲んでいます。
<%--- WebOTX WebAP JSP script1 Rel1 ----%>
<%--- WebOTX WebAP JSP script2 Rel1 ----%>
<%--- WebOTX WebAP JSP script3 Rel1 ----%>

例:
<%--- WebOTX WebAP JSP script1 Rel1 ----%>
<%--- This JSP File can be used for JSP 1.0 ---%>
<%@ page import="jp.co.nec.webapjsp.run.*" %>
<%@ page import="jp.co.nec.webapjsp.common.util.*" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%--- WebOTX WebAP JSP script1 Rel1 ----%>

この範囲に含まれていないソースについてカスタマイズを行ってください。範囲内に含まれるソースを修正する必要がある場合には、修正による影響を十分考慮のうえ行ってください。

自動生成したJSPファイル内で使用できるJSP1.0構文

自動生成したJSPファイル内で使用できるJSP1.0構文は以下の通りです。

JSP構文 説明
Hidden Comment Documents the JSP page, but is not sent to the client.
<%-- comment --%>
Expression Contains an expression valid in the page scripting language.
<%= expression %>
Scriptlet Contains a code fragment valid in the page scripting language.
<% code fragment %>
Include Directive Includes a file of text or code in the JSP source file.
<%@ include file="relativeURL"%>
この構文の使い方は「カスタマイズ例3(JSP構文<%@ include %>を使う)」を参照してください。
<jsp:include> Includes data in a JSP page from another file, without parsing the data.
<jsp: include page="{ relativeURL | <%= expression %> }" flush=" true" />

また以下のオブジェクトが自動生成したJSPファイル中から参照可能です。

オブジェクト 説明
request Subclass of javax.servlet.ServletRequest
response Subclass of javax.servlet.ServletResponse
session javax.servlet.http.HttpSession
out java.io.PrintWriter
config javax.servlet.ServletConfig

カスタマイズ例1 (サーバAPの実行結果をテキストとして出力)

WebAP JSPでは、サーバAPのメソッドの出力引数、戻り値を取り出す場合、APAgentクラスを使用します。

APAgentクラスは、OTXJSPResultRel1クラスの getAPAgentメソッドにより取得します。APAgentクラスを取得するコードについては、JSPファイルに自動生成しています。

以下に自動生成したコード例を示します。

<% PrimProj.allString.classes.stub.prim_allString_APAgentSub jspAgent_allString = (PrimProj.allString.classes.stub.prim_allString_APAgentSub)param.getAPAgent("allString"); %>

テキストとして表示したい箇所に、値を取得するコードを追記することにより、サーバAPの出力引数、戻り値を表示することができます。
出力引数を表示する場合、以下のようにコードを記述します。

文字列型<%= jspAgent_メソッド名.出力引数名 %>
数値型 <%= String.valueOf(jspAgent_メソッド名.出力引数名) %>

戻り値を表示する場合以下のようにコードを記述します。
(サーバAPのメソッドが void型の場合は、このような記述はしないでください。)

文字列型<%= jspAgent_メソッド名.jsp_return %>
数値型 <%= String.valueOf(jspAgent_メソッド名.jsp_return) %>

 

カスタマイズ例2 (配列データをテーブル形式で出力時、データが存在する行まで出力)

次のIDL定義、HTMLの場合を想定して、説明します。

IDL定義
interface ARRAYTEST{
  typedef string ARRAY_NAME[6]; 
  typedef wstring ARRAY_ADDR[6];

  string methodB(in ARRAY_NAME iNAME, in ARRAY_ADDR iADDR,
    out ARRAY_NAME oNAME, out ARRAY_ADDR oADDR);
};
HTML
<table name="tblA" border="1" >
<tr>
<th>名前</th>
<th>住所</th>
</tr>
</table>

JSP開発ツールを使って自動生成したJSPのテーブル出力部分をカスタマイズして、「名前」列に出力するデータが空文字列のとき、以降の行を出力しないようにします。
<%-- --%>は、コメントです。

<カスタマイズ前>
<TABLE NAME="tblA" border= "1"> 
<TR > 
<TH>名前</TH> 
<TH>住所</TH> 
</TR> 
 
<%   {  %> 
<%   int jsp_rowcount = 0;    %> 
<%   for(int jsp_i = 0 ; ; jsp_i++){    %> 
<%       boolean jsp_flag = false; %> 
<%       String jsp_column1_value = ""; 
         try{ 
             jsp_column1_value = jspAgent_methodB.oName[jsp_i]; 
             jsp_flag = true; 
         }catch(ArrayIndexOutOfBoundsException e){ 
         }%> 
<%       String jsp_column2_value = ""; 
         try{ 
             jsp_column2_value = jspAgent_methodB.oADDR[jsp_i]; 
             jsp_flag = true; 
         }catch(ArrayIndexOutOfBoundsException e){ 
         }%> 
<%       if(jsp_flag == false){ 
             break; 
         }%> 
<TR > 
    <TD><%= jsp_column1_value %></TD> 
    <TD><%= jsp_column2_value %></TD> 
</TR> 
<%    }    %> 
	 
<INPUT NAME="tblA__jsp_maxcount" TYPE="HIDDEN" VALUE="<%= jsp_rowcount %>" > 
<%    }    %> 
 
</TABLE> 

<カスタマイズ後>
<TABLE NAME="tblA" border= "1"> 
<TR > 
<TH>名前</TH> 
<TH>住所</TH> 
</TR> 

<%    {    %> 
<%    int jsp_rowcount = 0;    %> 
<%    for(int jsp_i = 0 ; ; jsp_i++){    %> 
<%        boolean jsp_flag = false; %> 
<%        String jsp_column1_value = ""; 
          try{ 
              jsp_column1_value = jspAgent_methodB.oName[jsp_i]; 
              if(jsp_column1_value.length() == 0){ 
                break; 
            } 
              jsp_flag = true; 
          }catch(ArrayIndexOutOfBoundsException e){ 
          }%> 
<%        String jsp_column2_value = ""; 
          try{ 
              jsp_column2_value = jspAgent_methodB.oADDR[jsp_i]; 
              jsp_flag = true; 
          }catch(ArrayIndexOutOfBoundsException e){ 
          }%> 
<%        if(jsp_flag == false){ 
              break; 
          }%> 
<TR > 
    <TD><%= jsp_column1_value %></TD> 
    <TD><%= jsp_column2_value %></TD> 
</TR> 
<%    }    %> 

<INPUT NAME="tblA__jsp_maxcount" TYPE="HIDDEN" VALUE="<%= jsp_rowcount %>" > 
<%    }    %> 

</TABLE>

カスタマイズ例3 (JSP構文<%@ include %>を使う)

JSP構文<%@include file="ファイル名" %>でファイルをインクルードする場合は以下の点に注意してください。

<記述例>
<%@ include file="/jsp/test1.jsp"%>

上記例の場合、インクルードするファイルは以下のようになります。

「<%@include%>のルートディレクトリ」の設定 インクルードするファイル
C:\WebAPJSP\INCLUDE\ C:\WebAPJSP\INCLUDE\jsp\test1.jsp
なし JSP開発ディレクトリ\jsp\プロジェクト名\トランザクション名\jsp\test1.jsp

 

5.4. エラー表示画面

カスタマイズ例1 (エラー表示画面を変更)

フェーズ処理を実行中にエラーを検出した場合に表示されるエラー表示画面は、以下の場所にあります。

WebAP JSP インストール ディレクトリ/jsp/jsp/runerr.jsp

runerr.jspは、SJISコードで記述しています。

エラー表示画面を変更して別のファイル名で格納した場合は、「環境設定」ページの「エラー発生時に表示するJSP名」を変更してください。

エラー表示画面を変更した場合、デフォルトと同じファイル名(runerr.jsp)のままにしておくと、WebAP JSPのバージョンアップインストールで、デフォルトのエラー表示画面に上書きされます。

エラー表示画面用JSPファイルにおけるエラー情報の参照方法について説明します。

<エラー概要>

エラーコード、エラーメッセージ一覧については、「WebOTX WebAP JSP メッセージ編 実行環境」を参照してください。

エラーコードの参照方法
    int errNo = jservletException.getErrno();
    int errcd = JServletError.getErrNo(errNo);

エラーメッセージの参照方法
    String errMsg = jservletException.getMsg();

<エラー詳細(CORBAシステム例外の場合)>

CORBAエラー種別の判断方法
   Exception e = jservletException.getException(); 
   if(e instanceof org.omg.CORBA.SystemException){ 
        org.omg.CORBA.SystemException e2 =  (org.omg.CORBA.SystemException)e; 
   }

マイナー番号の取得方法
    String  minor = String.valueOf(e2.minor);

エラー詳細の取得方法
    String emsg = e2.toString();

<エラー詳細(CORBAユーザ例外の場合)>

CORBAエラー種別の判断方法
    Exception e = jservletException.getException();
    if(e instanceof org.omg.CORBA.UserException){
        org.omg.CORBA.UserException e2 =  (org.omg.CORBA.UserException)e;
    }

エラー詳細の取得方法
    String emsg = e2.toString();

<エラー詳細(WebOTX VIS Connectorから通知されたユーザ例外の場合)>

WebOTX VIS Connectorでエラー発生時、VCAConUserExceptionが通知されます。
ただし、サーバAPを作成したWebOTX Connector Developer(VISコネクタ)のバージョンが4.2以前の場合はVISConUserExceptionが通知されます。
VCAConUserExceptionはVISConUserExceptionの情報に加えて、エラーの詳細情報を取得することができます。以下に、どちらの例外が通知されても情報を取得できる方法を示します。

エラー種別の判断方法
    Exception e = jservletException.getException();
    if(e instanceof jp.co.nec.webapjsp.run.common.VISConUserException){
        jp.co.nec.webapjsp.run.common.VISConUserException __jsp_vexception = 
             (jp.co.nec.webapjsp.run.common.VISConUserException)e;
        if(e instanceof jp.co.nec.webapjsp.run.common.VCAConUserException){
	    //VCAConUserExceptionの場合に行いたい処理を記述
        }
    }

エラー詳細の取得方法
    if(__jsp_vexception instanceof jp.co.nec.webapjsp.run.common.VCAConUserException){
	//VCAConUserExceptionの場合に詳細情報を取得
	String	detail  = ((jp.co.nec.webapjsp.run.common.VCAConUserException)__jsp_vexception).errdetail;
    }
    int __jsp_viscon_langtype = __jsp_vexception.errinfo & 0x00ff;   // WebOTX VIS Connectorの言語種別取得
			 
    if((__jsp_vexception.errinfo & 0x0100) != 0){   //  WebOTX VIS Connectorのコネクト状態チェック
        __jsp_viscon_is_connect = true;
    }
			 
    errinfo = Integer.toHexString(__jsp_vexception.errinfo);
 
    String [][]__jsp_msgdim = null;
    String visconerrPath = WebOTXJSPBase.getInstPath() + 
                  java.io.File.separator + "conf" + 
                  java.io.File.separator + "data" + 
                  java.io.File.separator + "visconerr.dat";
    try{
        setVisConErrMsg(visconerrPath); //  WebOTX VIS ConnectorUserException定義ファイルを読み込む
        if(__jsp_viscon_langtype == 0x00){ //  WebOTX VIS Connector C++版
            __jsp_msgdim = __jsp_VISConUserExceptionMsg_C; 
        }else if(__jsp_viscon_langtype == 0x01){ //  WebOTX VIS Connector JAVA版 
            __jsp_msgdim = __jsp_VISConUserExceptionMsg_Java; 
        }
    }catch(IOException e2){
    }
 
    if(__jsp_msgdim != null){
    // エラーコードに対応するメッセージを取得する
        int __vexception_errcode = (__jsp_vexception.errcode & (~0x10000000));
        for(int i = 0; i < __jsp_msgdim.length ; i++){
            String []__jsp_se =  __jsp_msgdim[i];
            try{
                if(__vexception_errcode == (Integer.valueOf(__jsp_se[0],16)).intValue()){
                    minor   = __jsp_se[0];	// 番号
                    cause   = __jsp_se[1];	// 原因
                    explain = __jsp_se[2];	// 詳細
                    tackle  = __jsp_se[3];	// 対処方法
                    break;
                }
            }catch(NumberFormatException e3){
            }
        }
    }

補足
WebOTX Connector Developer(VISコネクタ)で生成したサーバAPをカスタマイズして、独自エラーコードのVCAConUserExceptionを通知するようにした場合には、 WebOTX VIS ConnectorのUserException定義ファイル(visconerr.dat)に対応するエラーメッセージを追加してください。

WebOTX VIS ConnectorがC++版の場合は、visconerr.datの「// C 」のコメント行の下に、 WebOTX VIS ConnectorがJAVA版の場合は、visconerr.datの「// Java 」のコメント行の下に、エラーコード、原因、エラー内容、対処方法を、「,」で区切って1行に記述してください。エラーコードは16進で記述してください。

WebOTX VIS ConnectorのUserException定義ファイルは、以下の場所にあります。

WebAP JSP インストール ディレクトリ/conf/data/visconerr.dat

visconerr.datは、SJISコードで記述しています。

 

5.5. MFDL移行画面のカスタマイズ

MFDL移行した画面のカスタマイズは、自動生成したHTMLファイルをカスタマイズし、それを元にJSPファイルを作成する方法で行ってください。
HTMLファイルをカスタマイズする方法は、JSPファイルをカスタマイズする方法に比べて以下の点で便利です。

移行画面のカスタマイズ手順

以下に、移行画面をカスタマイズするための手順を説明します。移行定義ファイルの作成方法については、「移行定義ファイルの作成方法」を参照してください。

  1. 移行定義ファイル作成Excelファイルの「基本設定」シートの「生成対象」に「HTML」を指定して、移行定義ファイルを作成してください。
  2. JSP開発ツールまたはコマンドラインから、1.の移行定義ファイルを指定してMFDL移行処理を実行してください。HTMLファイルが生成されます。
  3. HTMLファイルをカスタマイズしてください。
  4. 移行定義ファイル作成Excelファイルの「基本設定」シートの「生成対象」に「JSP」を指定、「HTMLの反映」に「する」を指定して、移行定義ファイルを作成してください。
  5. JSP開発ツールまたはコマンドラインから、4.の移行定義ファイルを指定してMFDL移行処理を実行してください。JSPファイルが生成されます。

HTMLを作成した後で、WebOTX Connector Developer(VISコネクタ)でMFDL定義ファイルから移行し直すなどしてコネクタ連携ファイルを変更した場合は、以下のことに注意してください。


WebOTX Connector Developer(VISコネクタ)で追加/更新したフィールドのカスタマイズ

WebOTX Connector Developer(VISコネクタ)で追加/更新したパラメータをJSPファイルに反映するには、HTMLファイル生成後、カスタマイズしたHTMLファイルをベースにJSPファイルを生成する必要があります。
HTMLファイルを生成すると、追加/更新したフィールド(NAME属性値にはパラメータ名が含まれています)が画面の一番下に作成されるので、HTMLファイルをカスタマイズして適当な位置に移動してください。



移行画面のカスタマイズの注意点

移行画面のカスタマイズを行う場合、以下の点に注意してください。


カスタマイズ例1 (テキストフィールドをラジオボタンに変更したい場合)

(1)以下のように自動生成したタグの変更を行いたい箇所を非表示にします。 

  例: <INPUT NAME="M_SYORI" TYPE="text" ・・・  style="display:none" >

(2)以下のラジオボタン(カスタマイズするタグ)を追加し、ラジオボタンのonClickで非表示にした<INPUT>に値を
設定するようにJavaScriptコードを記述してください。 

  例: <INPUT TYPE="radio" NAME="M_SYORIR" onClick='M_SYORI.value="0"'>0:問合せ

       <INPUT TYPE="radio" NAME="M_SYORIR" onClick='M_SYORI.value="1"'>1:登録

       <INPUT TYPE="radio" NAME="M_SYORIR" onClick='M_SYORI.value="2"'>2:修正

       <INPUT TYPE="radio" NAME="M_SYORIR" onClick='M_SYORI.value="3"'>3:削除