文字列バリデーター

文字列値をテストして、JSF 妥当性検査の 一連の制約に準拠しているかどうかを調べます。

StringValidator を使って、 ある値が妥当性検査の一連の制約に準拠しているかどうかを テストします。 バリデーターによって、JavaScript™ 文字列 のテストを行います。 文字列がマスク文字列である場合、 バリデーターにテストされる前に、文字列 (リテラルを取り去ったもの) に 変換する必要があります (MaskConverter を使用)。

バリデーターの構成時に、妥当性検査の制約を 指定します (Get/SetAttribute 呼び出しを使用して、 制約の追加/除去を行うこともできます)。 制約における数値を、すべて指定することができます。 制約を指定しないと、意味のある作業にはなりません。

制約として required を指定する場合 (かつ true に設定する場合)、 その値が非ヌルである (ヌルでもなく空ストリングでもない) ことを、 バリデーターが要求します。 required が設定されない場合、 他のすべての制約に関係なく、 ヌル/空の文字列が有効な値と見なされます (つまり、 必須が設定されなければ、 「ヌル」は常に有効な値になります)。

制約として minimum-length が指定された場合は、 対象となる値の長さ (ヌルでない場合) が 指定された長さ以上である必要があります。 制約として maximum-length が指定された場合は、 対象となる値の長さは 最大限の長さ以下である必要があります。

正規表現が指定された場合、 対象となる値は少なくとも一度は 式と一致する必要があります。 (value.match(exp) != null) によって true に評価される必要があります。 正規表現、または事前構築された正規表現への参照のいずれかが、 指定されている必要があります。

JavaScript EL 式を使用すると、値が設定範囲内にあるかどうか、 値が不連続な範囲内にあるかどうか、 などをテストすることができます。 現在のところ、ページ上のある値を別の値と比較するために 使用することはできません。

妥当性検査の結果には影響しませんが、 以下の順序で制約をテストを行ってください。
  1. required
  2. minimum-bound
  3. maximum-bound
  4. constraint
  5. constraint-regexpression
  6. constraint-expression

JavaScript コンストラクター

hX_5.addValidator("id", new hX_5.StringValidator(attributes)); 各部の意味は次のとおりです。

id

コンポーネントが付加される HTML タグの ID。

属性

表 1. 文字列バリデーター属性

属性名

説明

required

required を指定した場合、 値をヌルや空ストリングにすることができなくなります。 required を指定しない場合、 値をヌルや空ストリングにすることができます。 また、他の検証制約はスキップされます。

minimum-length

ストリングが含まなくてはいけない最小文字数。

maximum-length

ストリングに含めることができる最大文字数。

constraint-regexpression

少なくとも一度は 値が一致しなければならない、Java™ の 正規表現。 正規表現について詳しくは、Java 文書を 参照してください。

constraint

事前定義された正規表現を適用します。 以下の事前定義された式が使用可能です。
  • AlphabetExOnly : ^[A-Za-z¥u00C0-¥u00D6¥u00D8-¥u00F6¥u00F8-¥u00FF]+$ という意味です
  • AlphabetOnly : ^[A-Za-z]+$ という意味です
  • DigitOnly : ^[0-9]+$ という意味です
  • AlnumExOnly : ^[A-Za-z0-9¥u00C0-¥u00D6¥u00D8-¥u00F6¥u00F8-¥u00FF]+$ という意味です
  • AlnumOnly : ^[A-Za-z0-9]+$ という意味です
  • UpperCaseOnly : ^[A-Z]+$ という意味です
  • LowerCaseOnly : ^[a-z]+$ という意味です

constraint-expression

満たす必要が ある JavaScript EL 式。 JavaScript EL 式 は、JSF EL 式とほぼ同じですが、以下の違いがあります。
  • 演算子を表す際に、「ストリング」形式の 演算子を使用することはできません (例えば、== は 使用できますが、.eq は使用できません)。
  • 参照可能な値は、@testValue (テスト中の値を表します) だけです。
  • @testValue 内の日付/時刻コンポーネント には、Java アクセサー を使用してアクセスできます。 具体的には、.date、.day、.hours、.minutes、.month、.seconds、.timezoneOffset、.time、.year が 使用できます。

API 呼び出し

表 2. API 呼び出し

API 呼び出し

説明

boolean = validate(value)

ストリングを検証します。 値が合格した場合は true が戻されます。 値が不合格の場合は false が戻され、lastError が設定されます。

string = lastError()

変換が失敗すると、 失敗の理由をローカライズされたストリングとして戻します。

object = setAttribute(attribute)

属性を設定します。 属性がすでに設定されたものである場合は、 その値を変更します。

string = getAttribute(attribute-name)

属性の現行値を取得します。

サンプル・コード

入力フィールドの値の妥当性検査を行います。

 // 文字列が E メール・アドレスのように見えるかどうかをチェックする、バリデーターを構成します
hX.addValidator("1Z", new hX.StringValidator("required:true", "minimum-length:5", 
                  "constraint-regexpression:"^[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+¥.[A-Za-z]{2,4}$"));

 // 値の妥当性検査を行います
var x = document.getElementById("form1:textA");
var v = hX.getValidatorById("1Z");
if (!v.validate(x.value)) alert ("ERROR: " + v.lastError());

フィードバック