2011-10-20 3 views
1

JSF 관리 bean에서 JSR303 bean validation 주석을 사용하여 텍스트 입력의 유효성을 검사합니다. 여기에 주석은 다음과 같습니다 : 파이프 문자가 문자열에 발견되면빈 필드에서 @Pattern 유효성 검사를 건너 뛰는 방법은 무엇입니까?

@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 주석이 오류가 발생합니다. 그러나 사용자가 입력란을 공백으로두고 제출을 클릭하면 오류도 발생합니다. 이 필드가 비어있는 경우 왜 이런 현상이 발생합니까?

+0

당신은 제출 된 경우 TXT는 널 (null) 인에 문제가있을 수 있습니다 : 여기

[^|]*는 몇 가지 테스트 위치 : 한정 기호를 사용해야합니다. try ... txt = ""낄낄 거림. –

답변

3

정규 표현식 [^|]에는 정확히 일치하는 한 문자가 필요하기 때문에.

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

관련 문제