ホーム » ブログ » Terasolunaでバリデーションチェックサンプル_範囲チェック
このエントリーをはてなブックマークに追加
@2015/04/24
本日のテーマは、引き続きTerasolunaフレムワークのバリデーションチェックサンプルを掲載します。

Terasolunaは事前に数種類の範囲チェックルールを設け、必要の場合、それらのチェックルールを組み込むだけで項目の範囲チェック機能を持たせる。
では、数値範囲チェック、バイト数範囲チェック、日付範囲チェックの例を挙げながら、説明します。
※ちなみに、今日は頭痛のため、あまり考えずに本記事を作成しました。間違いところがあれば、ご指摘ください。

先ず、数値範囲チェック(int,float,double):

①整数数値範囲(int)
・JSPコード
<html:text name=""_commonForm"" property=""t10_1_intRange"" size=""50"" maxlength=""25"" errorStyleClass=""error-input"" />
・xxx-validation.xmlチェックルールのコード:
 <!-- 10_1.整数数値範囲チェック -->
      <form name=""/v10_1CheckAction"">
      <field property=""t10_1_intRange""
                   depends=""intRange"">
               <arg key=""整数数値範囲"" resource=""false"" position=""0""/>
               <arg key=""${var:min}"" resource=""false"" position=""1""/>
               <arg key=""${var:max}"" resource=""false"" position=""2""/>
               <var>
                   <var-name>min</var-name>
                   <var-value>1</var-value>
               </var>
               <var>
                   <var-name>max</var-name>
                   <var-value>99</var-value>
               </var>
           </field>
      </form>  
上記、フィールドt10_1_intRange(property=""t10_1_intRange"")に対して、整数範囲チェックルール(depends=""intRange"")を設定しました。数値範囲は1~99とする。
サンプルを実行すると、下記のようなイメージです。



②float数値範囲(float)
float数値チェックは小数点以下7桁までチェックできます。実際の開発中で精度をそこまで検証するケースは稀だと思いますが、一応頭に置いといてください。
・JSPコードを省略します。
・xxx-validation.xmlでfloat数値範囲チェックの検証コード:
 <!-- 10_2.Float型の数値範囲チェック -->
      <form name=""/v10_2CheckAction"">
      <field property=""t10_2_floatRange""
                   depends=""floatRange"">
               <arg key=""Float型数値範囲"" resource=""false"" position=""0""/>
               <arg key=""${var:min}"" resource=""false"" position=""1""/>
               <arg key=""${var:max}"" resource=""false"" position=""2""/>
               <var>
                   <var-name>min</var-name>
                   <var-value>1.0</var-value>
               </var>
               <var>
                   <var-name>max</var-name>
                   <var-value>100.0</var-value>
               </var>
           </field>
      </form>  
これで1.0~100.0までのfloat数値範囲チェックを組み込まれました。
先ほど言った通りに、精度は小数点7桁ですので、100.0000001は範囲外となり、100.00000009は範囲内です。(はず)
実際のイメージは下記となります。



③double型数値範囲チェック(double)
いきなりですが、xxx-validation.xmlの検証ルールコード:
 <!-- 10_3.Double型の数値範囲チェック -->
      <form name=""/v10_3CheckAction"">
      <field property=""t10_3_doubleRange""
                   depends=""doubleRange"">
               <arg key=""Double型数値範囲"" resource=""false"" position=""0""/>
               <arg key=""${var:min}"" resource=""false"" position=""1""/>
               <arg key=""${var:max}"" resource=""false"" position=""2""/>
               <var>
                   <var-name>min</var-name>
                   <var-value>1.0</var-value>
               </var>
               <var>
                   <var-name>max</var-name>
                   <var-value>100.0</var-value>
               </var>
           </field>
      </form> 
先ほどのfloat型の範囲チェックと似ています。唯一の違いは、精度です。double型の精度は小数点以下15桁です。
イメージ:



それでは、バイト数範囲チェックルールに進みます。
ご存知の通りに、バイト数は文字コードによって変わります。なので、バイト数範囲チェックの際に文字コード指定してください。指定しないと、VMのデフォルト文字コードとなります。
この例では、入力テキストと入力テキストエリアの2つのフィールドで検証します。理由は改行コードなども検証したいため。
コードはこれ:
  <!-- 11.バイト数範囲チェック -->
      <form name=""/v11CheckAction"">
       <field property=""t11"" depends=""byteRange"">
                <arg key=""入力テキスト"" resource=""false"" position=""0"" />
                <arg key=""${var:minByte}バイト"" resource=""false"" position=""1"" />
                <arg key=""${var:maxByte}バイト"" resource=""false"" position=""2"" />
                <var>
                  <var-name>minByte</var-name>
                  <var-value>4</var-value>
                </var>
                <var>
                  <var-name>maxByte</var-name>
                  <var-value>10</var-value>
                </var>
                <var>
                  <var-name>encoding</var-name>
                  <var-value>Windows-31J</var-value>
                </var>
            </field>
            <field property=""t11_textarea"" depends=""byteRange"">
                <arg key=""入力テキストエリア"" resource=""false"" position=""0"" />
                <arg key=""${var:minByte}"" resource=""false"" position=""1"" />
                <arg key=""${var:maxByte}"" resource=""false"" position=""2"" />
                <var>
                  <var-name>minByte</var-name>
                  <var-value>4</var-value>
                </var>
                <var>
                  <var-name>maxByte</var-name>
                  <var-value>10</var-value>
                </var>
                <var>
                  <var-name>encoding</var-name>
                  <var-value>Windows-31J</var-value>
                </var>
            </field>
      </form>  
これで、入力フィールドに入力できるバイト数範囲は4~10と指定しました。漢字だと、2文字~5文字です。改行も2バイトとカウントしますので、ご注意ください。




最後、日付範囲チェックの例です。
Terasolunaで日付チェックはdateチェックとdate厳密チェックを2つ範囲チェックができます。
datePatternチェックは緩いチェック、datePatternStrictチェックは厳密チェックです。
つかり、datePattern=""yyyy/MM/dd""を指定したら、2000/01/01か、2000/1/1にも関わらず、日付であれば、すべてOKです。
一方、厳密チェックのdatePatternStrict=""yyyy/MM/dd""を指定する場合、2000/1/1入力したら、エラーとなります。
注意すべきところは、同じフィールドにdatePatternとdatePatternStrictを同時に指定した場合、datePatternの指定は優先となります。
では、xxx-validation.xmlのコードです。
<!-- 14.日付範囲チェック -->
      <form name=""/v14CheckAction"">
  <field property=""t14""
   depends=""dateRange"">
   <arg key=""日付範囲(指定フォーマット)"" resource=""false"" position=""0""/>
            <arg key=""${var:startDate}"" resource=""false"" position=""1""/>
            <arg key=""${var:endDate}"" resource=""false"" position=""2""/>
      <var>
        <var-name>startDate</var-name>
        <var-value>2000/01/01</var-value>
      </var>
      <var>
        <var-name>endDate</var-name>
        <var-value>2010/12/31</var-value>
      </var>
      <var>
        <var-name>datePattern</var-name>
        <var-value>yyyy/MM/dd</var-value>
      </var>
  </field>  
  <field property=""t14_strict""
   depends=""dateRange"">
   <arg key=""日付範囲(厳密チェック)"" resource=""false"" position=""0""/>
            <arg key=""${var:startDate}"" resource=""false"" position=""1""/>
            <arg key=""${var:endDate}"" resource=""false"" position=""2""/>
      <var>
        <var-name>startDate</var-name>
        <var-value>2000/01/01</var-value>
      </var>
      <var>
        <var-name>endDate</var-name>
        <var-value>2010/12/31</var-value>
      </var>
      <var>
        <var-name>datePatternStrict</var-name>
        <var-value>yyyy/MM/dd</var-value>
      </var>
  </field>              
      </form> 
上記、フィールドt14は2000/01/01~2010/12/31間の日付を入力すれば、エラーにならない。
フィールドt14_strictにも2000/01/01~2010/12/31の範囲ですが、2005/1/1のような日付入力したら、エラーになると覚えてください。
イメージ:


以上、本日のテーマでした。

筆者は在日中国人です。今までは主にWeb系のシステム開発をしてきました。
Terasolunaの実際開発経験が0ですが、Struts、Springとibatis、いわゆるSSIの開発案件がいくつの経験がありました。
IT技術について、これからもこのサイトを通じて発信していきたいと思いますので、ご応援ください。





♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
0人
このエントリーをはてなブックマークに追加


◎zanmai.netサイト記事の転載・複製(コピー)は、zanmai.netへのリンクであることを明記してください!
◎本記事URL: http://www.zanmai.net/blog/data/237.html

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

アーカイブ @zanmai.net
check