문자열이 있으므로 문자열을 사용했는데 올바른 형식을 사용했는지 여부와 입력 한 내용이 올바른지 확인해야합니다 값은 사용자 정의 유효성 검사기를 사용하는 비즈니스 규칙에 따라 유효합니다. 이제 고객은 전자 메일이 발생하지 않은 경우 전자 메일과 관련된 오류 메시지 만 표시되는 경우 전자 메일을 선호합니다. 그러나 내가 아는 한이 구별을 할 방법이 없습니다. 아니면 누구든지이 작업을 수행 할 수있는 방법을 생각할 수 있습니까?스프링 폼 오류 태그 : 특정 오류가 있는지 확인하십시오 (예 : null이 아닌 경우 표시되지 않음)
1
A
답변
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 (나는 그것을 시도하지는 않았지만 작동하길 바란다)
bean 객체를 재사용하고 싶기 때문에 원하는 동작은 아니지만 조건은 동일하지 않습니다. 각 페이지. –
@ 잭 니켈 : 내 확장 된 대답보기 – Ralph