[解決方法]
通常、Internet Explorer上でBiz/Browserのプログラムを実行する場合、CRSやCRX
ファイルを呼び出して実行しますが、HTMLによるWebアプリケーションと同様にJSPなどの
サーバプログラムで動的にCRSスクリプトを生成し、実行することが出来ます。
サーバプログラムでは、実行したいCRSスクリプトを呼び出し元へ送り返すように
コーディングします。
このとき、サーバプログラムから送信するコードのヘッダ情報のContent-Typeを
「application/crs」「application/crx」と指定し、CRSスクリプトとして解釈可能な
テキストとして送り返します。
Internet Explorerは、このヘッダ情報(Content-Type)を判断し、受け取ったテキストを
Biz/Browserで実行します。
以下にサーバプログラムで動的にCRSスクリプトを生成、実行する例を挙げます。
<1>Biz/Browser起動時にサーバプログラムが保持している値を渡す
◆JSPサンプル
<%@page lanuage="java" contentType="application/crs; charset=Shift_JIS"%>
<%
String shellid = request.getParameter( "severid" );
%>
//.ShellId = "<%=shellid%>
Login("http://server/ShellIdSample/Form1.crs");
|
上記の例では、「contentType」に「application/crs」を設定し、最初に呼び出すCRS
(例えばlogin.crs)をサーバプログラムで動的に生成し、実行します。
このとき、パラメータ渡しの代わりに、サーバプログラムが保持している「shellid」を設定
してBiz/Browserを起動しています。
また、Loginメソッドで指定しているURLも実行状況によって切り替える、といったことも
可能です。
<省略>
<%
if( status == "A" ){
crspath = "programA.crs";
} else {
crspath = "programB.crs";
}
%>
Login("http://server/ShellIdSample/<%=crspath%>");
|
<2>CRSから呼び出されたサーバプログラム内でCRSスクリプトを生成、実行する
◆CRSサンプル
Form Form1 {
Form Form2 {
}
ImageButton ImageButton1[3] {
Function OnTouch( e ){
var idx = e.from.index;
/* 現在表示中の子オブジェクトを削除 */
^.Form2.DeleteChild();
/* サーバプログラムで生成したCRSスクリプトを
Form2の配下で実行できるようにForm2のGetメソッドを
実行する */
/* パラメータとして、何番目のボタンがクリックされたか
indexを渡す */
^.Form2.Get( "http://server/path/subForm.jsp",
"id=" + str( idx ) );
}
}
} |
◆JSPサンプル
<%@page lanuage="java" contentType="application/crs; charset=Shift_JIS"%>
<%
/* CRSから渡されたパラメータを取得 */
String id = request.getParameter( "id" );
<変数定義 省略>
if( id.equals( "0" ) ){
title = "病気の保険";
tem.add("医療");
tem.add("介護");
tem.add("がん");
tem.add("女性向け");
else if( ・・・・
}
%>
Form FormID{
Label Label1{
Value = "【<%= title %>】";
}
<%
for( i = 0; i < item.size(); i++ ){
/* 動的にImageButtonを複数生成 */
out.println( "ImageButton ImageButton" +
Integer.toString(i + 1) );
out.println( "{" );
if( i == 0 ){
out.println( "Y = 40;" );
out.println( "X = 5;" );
} else {
<座標定義 省略>
}
out.println( "Title = \"" + item.get(i) + "\";" );
out.println( "Width = 180;" );
out.println( "Height = 30;" );
out.println( "}" );
}
%>
}
|
NetObject.Getメソッドには、サーバプログラムを指定することができ、引数を渡すことも
出来ます。
サーバプログラムからのレスポンスはCRSスクリプトとして処理されます。
これにより、サーバプログラム内で動的にCRSスクリプトを生成し、オブジェクトを生成する
といったことが可能です。
上記のサンプルでは、以下の様な画面が生成されます。
●サーバプログラムで動的に生成されたCRSスクリプトは、キャッシュの対象外となりますので
ご留意ください。
CRSファイル形式のサンプルを
「サーバプログラムでShellIDを設定するサンプル (Svr_013_1.zip)」
「サーバプログラムで動的にオブジェクトを生成するサンプル (Svr_013_2.zip)」
よりご利用いただけます。
|