Javaプログラミング/Javaプログラミング関連情報

[JSF] 入力された値を検証する(2ページ目)

今回は、入力されたデータの検証に必要となるコンバーターとバリデーターという機能についてです。

執筆者:掌田 津耶乃

コンバーターとは?


プログラムの処理内容によっては、送信される値が特定のものでなければならないことがあります。こうしたとき、正しい内容の値を送信するようにするための仕組みがJSFにはあります。1つは「コンバーター」と呼ばれるものです。

コンバーターは、「値を変換する仕組み」です。例えば、整数の値が必要な場合があったとしましょう。このとき、整数の値に変換するコンバーターを使うと、送られた値は自動的に整数として取り出せるようになります。のみならず、整数以外の値が送られた場合には、再度フォームが表示され、処理は実行されなくなります。正しい値が送られない限り、プログラムは動かないのです。

コンバーターを使うには、JSFの設定ファイルに登録をしておく必要があります。実際にやってみましょう。まず、faces-config.xmlを開き、<faces-config>タグ内に以下のようなタグを追記します。

<converter>
  <converter-id>int_conv</converter-id>
  <converter-class>javax.faces.convert.IntegerConverter</converter-class>
</converter>

コンバーターは、<converter>タグを使って登録します。;<converter-id>タグでコンバーターのID(要するに、名前ですね)を指定し、使用するコンバーターのクラスを<converter-class>で指定します。これにより、指定されたコンバータークラスが、登録IDで呼び出せるようになります。

ここで登録したIntegerConverterというクラスは、整数に変換するコンバーターです。JSFには、標準でいくつかのコンバーターが付属しており、これもその一つです。では、コンバーターを使ってみましょう。まず、入力フィールドにコンバーターを設定する形でフォームを用意します。

<f:view>
  <h:outputText value="JSF Page 1" id="text0"
    style="color: #0000AA; font-size: 18px; font-weight: bold" />
  <br /><br />
  <h:outputText value="これは、JSFによる表示です。" id="text1"
    binding="#{page1Bean.text1}" escape="true" />
  <h:form>
    <h:inputText binding="#{page1Bean.field1}" converter="int_conv" />
    <h:commandButton value="送信" action="#{page1Bean.button1_action}" />
  </h:form>
</f:view>


ここでは、<h:inputText>タグの属性として、converter="int_conv"というものが書かれていますね。このようにコンバーターは、converter属性を使い、使用するコンバーターのIDを設定して利用します。

では、送信されたプログラムの処理を管理Beanに用意しましょう。ここではサンプルとして、送られてきた数字を元に、1からその数字までの合計を計算し表示するようにしてみます。

public String button1_action(){
  int n = (Integer)field1.getValue();
  int total = 0;
  for (int i = 1;i <= n;i++) total += i;
  text1.setValue("合計:" + total);
  return null;
}

整数を書いて送信すると合計が表示される。整数以外の値だとプログラムは動かない。

プログラムを見てみるとわかりますが、(Integer)field1.getValue()というようにIntegerとして値を取り出していますね。コンバーターを指定すると、このようにそのコンバーターで得られる種類の値として取り出せるようになります。逆に、(String)して取り出そうとするとエラーになるので注意が必要です。
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます