25.3. GWT ウィジェットを Seam コンポーネントにつなげる


次に、 コンポーネントに非同期インターフェースを返すメソッドを記述します。 このメソッドはウィジェットクラス内にあり、 非同期クライアントのスタブへの参照を取得するためウィジェットにより使用されます。
private MyServiceAsync getService() {       
  String endpointURL = GWT.getModuleBaseURL() + "seam/resource/gwt";      
      
  MyServiceAsync svc = (MyServiceAsync) GWT.create(MyService.class);
  ((ServiceDefTarget) svc).setServiceEntryPoint(endpointURL);
  return svc;     
}
Copy to Clipboard Toggle word wrap
最後にクライアントスタブでメソッドを呼び出すウィジェットのコードを記述します。 次の例ではラベル、 テキスト入力フィールド、 ボタンで構成されるシンプルなユーザーインターフェースを作成します。
public class AskQuestionWidget extends Composite {
  private AbsolutePanel panel = new AbsolutePanel();
   
  public AskQuestionWidget() {      
    Label lbl = new Label("OK, what do you want to know?");
    panel.add(lbl);
    final TextBox box = new TextBox();
    box.setText("What is the meaning of life?");
    panel.add(box);
    Button ok = new Button("Ask");
    
    ok.addClickListener(new ClickListener() {
    
      public void onClick(Widget w) {
        ValidationUtility valid = new ValidationUtility();
        if (!valid.isValid(box.getText())) {
          Window.alert("A question has to end with a '?'");
        } else {
          askServer(box.getText());
        } 
      }
    });
    panel.add(ok);
      
    initWidget(panel);
  }

  private void askServer(String text) {
    getService().askIt(text, new AsyncCallback() {
    public void onFailure(Throwable t) {
      Window.alert(t.getMessage());
    }

    public void onSuccess(Object data) {
      Window.alert((String) data);
    }         
  });      
}
   
...
Copy to Clipboard Toggle word wrap
ボタンをクリックすると askServer() メソッドが呼び出され、 入力テキストの内容を渡します。 この例では、 入力値が正しい質問であるかも検証します。 askServer() メソッドは非同期クライアントスタブへの参照を取得し (getService() メソッドで返される)、 askIt() メソッドを呼び出します。 その結果はアラートウィンドウに表示されます (または呼び出しが失敗するとエラーメッセージが表示されます)。
この例の完全なコードは Seam ディストリビューションの examples/remoting/gwt ディレクトリにあります。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat