クライアント/サーバー・インタラクションの追加

サーバー・サイドとクライアント・サイドのアクションの概要

Rogue Wave® JViews JavaScript Web アプリケーション・サポートは、サーバー側で実行される新しいアクションを定義する簡略化された方法を提供します。 例えば、生成済みイメージ上に表示されるグラフィック・オブジェクトをユーザーが削除できるようにするとします。イメージをクリックしてオブジェクトを選択するという、このアクションの一部はクライアント・サイドで行う必要があります。オブジェクトの削除は新規イメージを生成する前にサーバー・サイドで行う必要があります。そのような振る舞いを実行するために、「サーバー・サイド・アクション」という概念があります。アクションは、名前と一連のストリング・パラメーターで定義されます。

クライアント・サイドでのアクション

JavaScript クライアントでは、IlvView JavaScript™ コンポーネントの performAction メソッドを使用して、アクションの実行をサーバーに指示します。
次に、viewIlvView であると仮定し、サーバー・サイドに座標パラメーターとともにアクション「削除」の実行を要求する例を示します。
var x = 100;
var y = 50;
var params = new Array();
params[0]=x;
params[1]=y;
view.performAction(“delete”, params);
In a thin-Java client the system is the same: 
float x = 100f;
float y = 50f;
String[] params = new String[2];
params[0] = Float.toString(x);
params[1] = Float.toString(y);
view.performAction(“delete”, params);

performAction メソッドがサーバーに新規イメージを要求します。イメージ要求で、サーバー・サイドがアクションを実行できるようにパラメーターがさらに追加されます。これで、performAction を呼び出すと、クライアントとサーバー間を一周だけします。
定義済みインタラクターは、クライアント・サイドの新規アクションの定義に役立つように提供されています。詳細は、「定義済みインタラクター」を参照してください。

サーバー・サイドでのアクション

サーバー・サイドでは、アクションが要求され実行されることを検出する必要があります。これは、 ServerActionListener インターフェースを使用して行います。
サーバー・サイドでアクションを受け取り実行できるようにするには、サーブレットにアクション・リスナーを追加するだけでいいようになっています。リスナーの performAction メソッドで、アクション名をチェックしてアクションを実行します。
「削除」アクションの場合は、サーブレットの init メソッドに次のコード行を追加します。
addServerActionListener(new ServerActionListener() {
   public void actionPerformed(ServerActionEvent e) throws ServletException 
  {
    if (e.getActionName().equals("delete")) {
      IlvPoint p = e.getPointParameter(0);
        // find object under this point and delete it if there is one.
    }  
  }
});
ServerActionEvent オブジェクトが、アクションに関する必要な情報と名前およびそのパラメーターを指定できます。

定義済みインタラクター

新規アクションの作成に役立つ定義済みインタラクターが 2 つ提供されています。IlvMapInteractor および IlvMapRectInteractor
IlvMapInteractor を使用すると、ユーザーが地図上をクリックすると、パラメーターとしてパスされたクリック・ポイントの座標と一緒にサーバーにアクションの実行が要求されます。2 つ目のインタラクターはほとんど同じですが、ユーザーがクリックするのではなくイメージの領域を選択する点が異なります。