SHOEISHA iD

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

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

Java EE 6 開発入門

JSF2の画面でAjaxの非同期通信を作る

JavaEE6 開発入門(4)


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード SampleWebApp.zip (26.7 KB)

Ajaxの機能を追加する

 先ほどまでの画面では、入力項目と送信ボタンを使ってサーバへ送信することまではできています。ではサーバ側での処理を行いましょう。手順としては次の2ステップになります。

  1. ManagedBeanにメソッド追加し、そのメソッドに処理を記述する
  2. ManagedBeanで追加したメソッドを起動するかをFaceletに追加する

 では手順通り、最初はManagedBeanにメソッドを追加してみましょう。追加する内容は、入力されたユーザー名とパスワードの内容をもとに、resultのメッセージを作成することです。実はすでにresultの受け渡しの部分は完成していたのですが、先ほどまでの処理では特にresultに対して何も行っていなかったため、何も表示されませんでした。今回はresult値を作成し、その結果を表示してもらうようにします。

[リスト5]actionメソッドを追加したSampleManagedBean.java
@Named(value="user")
@SessionScoped
  public class SampleManagedBean { 
  /** Creates a new instance of SampleManagedBean */ 
    public SampleManagedBean() {
    }
      String username; 
      String password; 
      String result; …(中略)… 
      public void action() { if ( password != null ) { 
        result = "ようこそ!" + username + "さん!" + "パスワードの長さは" + password.length() + "文字ですね。"; 
      } 
  } 
}

 追加するメソッド名は任意です。今回はactionとしました。このactionメソッドでは、resultにユーザー名とパスワードの長さを返すメッセージをresultに格納する処理を行いました。

 これでManagedBean側の処理は完了です。続いて、Faceletsでこのactionメソッドを呼び出す定義をしましょう。

[リスト6]ManagedBeanのメソッドを呼ぶ処理を追加した ajaxsamplejsf.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>JSF+Ajaxサンプル</title>
    </h:head>
    <h:body>
        <h:form id="form1">
            名前<h:inputText id="username" value="#{user.username}">
            </h:inputText>
            <br />
            パスワード<h:inputSecret id="password" value="#{user.password}"></h:inputSecret>
            <br />
            <hr></hr>
            <h:commandButton id="sender" action="#{user.action}" value="送信する"> …①
            </h:commandButton>
            <h:outputText id="result" value="#{user.result}"></h:outputText>
        </h:form>
    </h:body>
</html>

 実は、1の<h:commandButton>にaction属性を追加しただけです。#{user.action}にて送信するメソッドを指定しています。userは今回作成したManagedBeanのことなので、そのactionを参照する=actionメソッドを実行することになります。

次のページ
まとめ

修正履歴

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Java EE 6 開発入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

WINGSプロジェクト 東 浩二(アズマ コウジ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6050 2011/11/02 17:21

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング