2011-10-20 18 views
1

JSFマネージドBeanでJSR303 Bean検証アノテーションを使用して、テキスト入力を検証しています。ここでは、注釈は以下のとおりです。空白のフィールドで@パターン検証をスキップする方法は?

@Size(min=0, max=20, message = "Value cannot be more than 20 characters") 
@Pattern(regexp = "[^|]", message = "Invalid entry. See field description.") 
private String txt; 

@Pattern注釈は、パイプ文字が文字列中に発見されたエラーをスローします。しかし、ユーザーがフィールドを空白のままにしてsubmitをクリックすると、エラーもスローされます。フィールドが空白のときにこれがなぜ発生しますか?

+0

は、あなたが提出したときのtxtがnullであることに問題があるかもしれません。ここで

[^|]*はいくつかのテストです:あなたは、数量詞を使用する必要があります。試してみてください... gigglesのためのtxt = "" –

答えて

3

正規表現[^|]は、一致する文字が1文字だけ必要なためです。

System.out.println(Pattern.matches("[^|]", "")); // false 
System.out.println(Pattern.matches("[^|]", "a")); // true 
System.out.println(Pattern.matches("[^|]", "aaa")); // false 
System.out.println(Pattern.matches("[^|]*", "")); // true 
System.out.println(Pattern.matches("[^|]*", "aaa")); // true 
System.out.println(Pattern.matches("[^|]*", "a|a")); // false 
+1

ありがとうございました!!!! – sotn

関連する問題