SHOEISHA iD

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

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

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

Java EE 6 開発入門

CDIを利用したサンプルアプリーケションの作成

JavaEE6 開発入門(7)


画面となるfaceletsの作成

 最後に、画面の作成です。この画面では予想した値を入力し、入力値が正しいかを判定後、NumberGameに予想値を渡して結果を受け取ります。

[リスト5]番号合わせ画面となるfacelets index.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:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>番号あわせサンプル</title>
    </h:head>
    <!-- 番号あわせロジックを実装したManagedBeanはnumberの名前で管理される。-->
    <h:body style="font-size: 18px">
        次の番号の間から選んだ番号を予想してください。<br />
        <h:outputText id="result" value="#{number.message}" style="color:green" />
        [ #{number.smallest}~#{number.biggest} ]<br /> …(1)
        残り回数は #{number.remainingGuesses} 回です。<br />
        <h:form id="form1">
            <!-- 番号予想を入力 -->
            <h:inputText id="guess" value="#{number.guess}" 
               validatorMessage="#{number.smallest}から#{number.biggest}の数値を入力してください">
                <f:validateLongRange maximum="#{number.biggest}" minimum="#{number.smallest}" /> …(2)
                <f:ajax render="guessError" event="blur"/>
            </h:inputText>
            <!-- 入力チェック用エラーメッセージ -->
            <h:message for="guess" id="guessError" style="color: red"/> …(3)
            <br />
            
            <!-- 送信ボタン -->
            <h:commandButton id="sender" action="#{number.check}" value="送信する" /> …(4)
        </h:form>
    </h:body>
</html>

 リスト中にある#{number}はManagedBeanとなっているNumberGameクラスのCDIコンテナでの名称です。例えばフィールドの値を取得する場合には#{number.biggest}のように、メソッドを実行するときも同様に#{number.check}で指定できます。

 (1)では入力可能な数値の範囲を表示しています。予想した値が違うとそれに合わせて、次回入力可能な範囲が狭まりるため、動的に範囲を出力できるようにManagedBeanであるnumberのフィールドからそれぞれ取得しています。

 (2)では入力された数値の検証機能が行われます。この値の範囲もManagedMeanから動的に値を取得してチェックを行っています。

 (3)(2)の入力チェックエラーがあった場合に表示されるメッセージ領域です。エラーがない場合には表示されません。

 (4)は送信ボタンです。入力された値が適正な範囲の間であれば、予想値と乱数値のチェックが行われるcheck()メソッドが実行されます。

次のページ
@Producesを使って動的に生成するクラスを切り替える

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

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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6593 2012/06/10 12:16

おすすめ

イベント

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

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

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

メールバックナンバー