2012-01-24 1 views
1

문자열이 있으므로 문자열을 사용했는데 올바른 형식을 사용했는지 여부와 입력 한 내용이 올바른지 확인해야합니다 값은 사용자 정의 유효성 검사기를 사용하는 비즈니스 규칙에 따라 유효합니다. 이제 고객은 전자 메일이 발생하지 않은 경우 전자 메일과 관련된 오류 메시지 만 표시되는 경우 전자 메일을 선호합니다. 그러나 내가 아는 한이 구별을 할 방법이 없습니다. 아니면 누구든지이 작업을 수행 할 수있는 방법을 생각할 수 있습니까?스프링 폼 오류 태그 : 특정 오류가 있는지 확인하십시오 (예 : null이 아닌 경우 표시되지 않음)

답변

0

트릭은이 : 널 받아 두 개의 서로 다른 제약 (주석), 패턴에 대한

  • 하나,
  • 및 null이 아닌에 대한 두 번째가 있습니다.

기본적으로 javax.validation.constraints.Pattern "유효성 검사기"는 null을 허용합니다.

Accept String. null 요소는 유효한 것으로 간주됩니다.

@NotNull(message="{validation.notNull}") 
@Pattern(pattern="123" message="{validation.notPattern}") 
String myString; 

추가 :

(코멘트) (javax.validation.constraints.Pattern javadoc의)

그래서 당신이 결국해야 할 것은 이것이다

Bean 객체를 재사용하고 싶기 때문에 원하는 동작을하지만 각 페이지마다 조건이 동일하지 않습니다. - 잭 니켈 5 분 전에

이 경우 당신은 너무 groups 전화를 사용할 수 있습니다 (JSR303 Bean Validation Spec, Chapter 4.1.2 groups 참조 -이 또한 예를 들어). @Pattern의 기본 그룹을 사용하고 @NotNull의 다른 그룹을 사용하십시오. 이제 유효성 검사를 위해 지정한 그룹에 따라 유효성 검사 규칙을 사용하거나 사용하지 않도록 설정할 수 있습니다.

validator.validate(myObject, Default.class); 
validator.validate(myObject, MyGroup.class); 

남아있는 한 가지 문제가 있습니다. 스프링 3.0에서는 자동 검증 프로세스에 사용할 그룹을 지정할 수 없습니다. 그러나 3.1에서 그 기능 요구에 따라 SPR-6373 (나는 그것을 시도하지는 않았지만 작동하길 바란다)

+0

bean 객체를 재사용하고 싶기 때문에 원하는 동작은 아니지만 조건은 동일하지 않습니다. 각 페이지. –

+0

@ 잭 니켈 : 내 확장 된 대답보기 – Ralph