24.2. Seam オブジェクト


クライアント側からのコンポーネントとのやりとりは remote.js で定義される Seam Javascript オブジェクトで行われます。 コンポーネントに対する非同期呼び出しに使用されます。 オブジェクトはコンポーネントと連携するメソッドを含む Seam.Component そしてリモート要求を実行するメソッドを含む Seam.Remoting の 2 つの機能に区分されます。 このオブジェクトに精通する最も容易な方法は簡単なサンプルから始めることです。

24.2.1. Hello World サンプル

手順24.1 Hello World の例

  1. Seam オブジェクトがどのように動作するかを見るために、 まず helloAction と呼ばれる新しい Seam コンポーネントを作成します。
    @Stateless 
    @Name("helloAction") 
    public class HelloAction implements HelloLocal { 
        public String sayHello(String name) { 
            return "Hello, " + name; 
        } 
    }
    
    Copy to Clipboard Toggle word wrap
  2. 新しいコンポーネント用にローカルのインターフェースも生成する必要があります。 @WebRemote アノテーションはリモーティングでメソッドへのアクセスを可能にするために必要となるので特に注意してください。
    @Local 
    public interface HelloLocal { 
        @WebRemote 
        public String sayHello(String name); 
    }
    
    Copy to Clipboard Toggle word wrap
  3. 記述する必要があるサーバー側のコードはこれだけです。次に新しい Web ページを作成して helloAction コンポーネントをインポートします。
    <s:remote include="helloAction"/>
    Copy to Clipboard Toggle word wrap
  4. このページにボタンを追加して対話式のユーザーエクスペリエンスにします。
    <button onclick="javascript:sayHello()">Say Hello</button>
    Copy to Clipboard Toggle word wrap
  5. また、 ボタンをクリックしたときに動作を実行するスクリプトが必要になります。
    <script type="text/javascript">
    function sayHello() {
         var name = prompt("What is your name?");
         Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
    }
    
    function sayHelloCallback(result) {
        alert(result);
    }
    </script>
    Copy to Clipboard Toggle word wrap
  6. アプリケーションをデプロイしてページを見てみます。 ボタンをクリックしてプロンプトが出たら名前を入力します。 呼び出しが成功であることを確認する「Hello」メッセージがメッセージボックスに表示されます (Seam の /examples/remoting/helloworld ディレクトリにこの Hello World サンプルの全ソースコードがあります)。
Javascript コードから 2 つのメソッドを実装していることがわかります。 最初のメソッドはユーザーに対して名前を入力するよう促しリモート要求を行います。 以下の行を見てみましょう。
Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
Copy to Clipboard Toggle word wrap
この行の最初の部分 (Seam.Component.getInstance("helloAction")) は helloAction コンポーネントのプロキシまたは スタブ を返します。 この行の残りの部分 (sayHello(name, sayHelloCallback);) はスタブに対してコンポーネントのメソッドを呼び出します。
コード行全体で行っていることは、 コンポーネントの sayHello メソッドを呼び出し、 パラメータとして name を渡しています。2 番目のパラメータ sayHelloCallback はこのコンポーネントの sayHello メソッドのパラメータではありません。 Seam Remoting フレームワークは、要求に対する応答を受けたらそれを sayHelloCallback Javascript メソッドに渡されるべきことを指示しています (このコールバックパラメータはオプションとなるため、 void 戻りタイプでメソッドを呼び出している場合、または要求の結果を気にする必要がない場合は、 そのままにしておいて構いません)。
sayHelloCallback メソッドがリモート要求に対する応答を受け取ると、メソッド呼び出しの結果を表示する警報メッセージを表示します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat