SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

JWLフレームワークでのAJAXコンポーネントの実装

3つの演習で実装、AJAXコンポーネント

ダウンロード サンプルソース (12.0 KB)

AJAXタグの定義(2) ―コンテンツの更新―

コンテンツの更新: <hx:ajaxRefreshSubmit>

 <hx:ajaxRefreshSubmit>タグを使用すると、同じJSFページの親タグ内のコンテンツを非同期に置き換えることができます。置き換えるためのコンテンツはHTTP POSTリクエストで取得します。このタグはフォーム全体をサーバーへ送信したいときに使用します。

 このタグの使い方を、順を追って見ていきましょう。

  1. [File]→[New]→[Other]→[Web]→[Web Page]をクリックして、新規JSFページ「ajaxRefreshSubmitExample.jsp」を作成します。
  2. 図8 新規JSFページの作成
    図8 新規JSFページの作成
  3. Sourceモードで「ajaxRefreshSubmitExample.jsp」を開きます。
  4. [Palette]ペインで、[Enhanced Faces Components]をクリックします(Webパースペクティブにいることを確認してください)。
  5. 図9 [Palette]ペイン
    図9 [Palette]ペイン
  6. 3つの入力コンポーネントをパレットからページへドラッグ&ドロップします。これでリスト4のコードが生成されます。
  7. リスト4 3つの入力テキストフィールドのコード
    <hx:scriptCollector id="scriptCollector1">
    <h:form id="form1" styleClass="form">
       <h:inputText id="text1"
                    styleClass="inputText">
       </h:inputText>
       <h:inputText id="text2"
                    styleClass="inputText">
       </h:inputText>
       <h:inputText id="text3"
                    styleClass="inputText">
       </h:inputText>
    </h:form>
    </hx:scriptCollector>
    
  8. Panel Groupコンポーネントをパレットからページへドラッグ&ドロップします。
  9. Text Outputコンポーネントをパレットから手順5で追加したパネルへドラッグ&ドロップします。
  10. Panel Groupを選び、[Properties]→[AJAX]をクリックします。[Allow Ajax Updates]をクリックしてAjaxリクエストを[Submit]に設定します。
  11. 図10 AJAXのプロパティ
    図10 AJAXのプロパティ
  12. Button Commandをドラッグ&ドロップし、新規ビヘイビアを追加します。このビヘイビアではターゲットアクションを「group1」とし、マウスクリックで呼び出されるようにします。
  13. リスト5 [Submit]ボタンのビヘイビアのコード
    <hx:behavior event="onclick"
                 behaviorAction="get"
                 targetAction="group1" />
    
  14. 3つの変数text1、text2、text3を持つ新規Javaクラス「ThreeStringsConcatenatorBean.java」を作成します。
  15. 図11 新規^^Java^^クラスThreeStringsConcatenatorBean.javaの作成
    図11 新規^^Java^^クラスThreeStringsConcatenatorBean.javaの作成
  16. ThreeStringsConcatenatorBean.javaの中に、変数のゲッターメソッドおよびセッターメソッドを作成します。text1、text2、text3を結合して結果を返すgetConcatenateThreeFields()というメソッドを新たに追加します。
  17. リスト6 getConcatenateThreeFields()メソッドの実装
    public String getConcatenateThreeFields() {
    
       return text1 + text2 + text3;
    
    }
    
  18. ajaxRefreshSubmitExample.jspを選択します。[Page Data]画面で、[Faces Managed Beans]→[New]→[Faces Managed Bean]を選択します。
  19. 図12 新規Faces Managed Beanの作成
    図12 新規Faces Managed Beanの作成
  20. ThreeStringsConcatenatorBeanというJavaBeanを「faces-config.xml」に登録します。
  21. 図13 新規Faces Managed Beanの登録
    図13 新規Faces Managed Beanの登録
  22. JavaBean内のフィールドをページ上へドラッグして、これらのフィールドをJSPページ内のフィールドと対応付けます。
  23. 図14 Bean内のフィールドをページ上のInputフィールドに対応付け
    図14 Bean内のフィールドをページ上のInputフィールドに対応付け
  24. サーバー上でこのページを実行してみます(Websphere 6.1以上で実行していることを確認してください)。
  25. 図15 サーバー上でサンプルを実行
    図15 サーバー上でサンプルを実行
  26. コードが正しく動作するかどうかをテストしてください。
  27. 図16 ajaxRefreshSubmitサンプルの出力結果
    図16 ajaxRefreshSubmitサンプルの出力結果

 リスト7は、ここまで作成してきたサンプルの全ソースコードです。全体のソースコードはこの記事のダウンロードサンプルにも収録されています。

リスト7 ajaxRefreshSubmitの全ソースコード
<f:view>
   <body>
   <hx:scriptCollector id="scriptCollector1">
      <h:form id="form1" styleClass="form">
         <h:inputText id="text1"
                       styleClass="inputText"
                       value="#{concatenatorBean.text1}">
         </h:inputText>
         <h:inputText id="text2"
                      styleClass="inputText"
                      value="#{concatenatorBean.text2}">
         </h:inputText>
         <h:inputText id="text3"
                      styleClass="inputText"
                      value="#{concatenatorBean.text3}">
         </h:inputText>

         <hx:commandExButton type="button"
                             value="Submit"
                             id="button1"
                             styleClass="commandExButton">
            <hx:behavior behaviorAction="get;stop"
                         event="onclick"
                         targetAction>="group1" >
            </hx:behavior>
         </hx:commandExButton>

         <h:panelGroup id="group1" styleClass="panelGroup">
            <h:outputText id="text4"
                          styleClass="outputText"
                          value="#{concatenatorBean.
                                   concatenateThreeFields}">
            </h:outputText>
         </h:panelGroup>

         <hx:ajaxRefreshSubmit id="ajaxRefreshSubmit1"
                               target="group1" >
         </hx:ajaxRefreshSubmit>
      </h:form>
   </hx:scriptCollector>
   </body>
</f:view>

次のページ
AJAXタグの定義(3) ―外部コンテンツの取得―

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Aleksey Shevchenko(Aleksey Shevchenko)

オブジェクト指向言語に関わる仕事に8年間従事。過去4年間は、技術リーダー、プロジェクトマネージャを務める。金融、メーカー、出版の各業界にエンタープライズITソリューションを提供。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2523 2008/06/04 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー