2013-03-13 1 views
2

하나가 실패한 동안 다른 유효성 검사기의 실행을 중지 할 수 있는지 알고 싶습니다. 나는 내가빈 유효성 검사 - 첫 번째 오류시 유효성 검사 중지

E-mail 
The value may not be empty! 
을 얻을 빈 양식을 제출하려고 할 때, 내 페이지에 -

나는

<form:label path="email"><s:message code="email" /></form:label> 
<form:errors path="email" element="div" class="text-error"/> 
<form:input path="email" class="input-block-level" placeholder="Email address" /> 

<form:label path="email2"><s:message code="repeat_email" /></form:label> 
<form:errors path="email2" element="div" class="text-error"/> 
<form:input path="email2" class="input-block-level" placeholder="Email address" /> 

<form:label path="password"><s:message code="password" /></form:label> 
<form:errors path="password" element="div" class="text-error"/> 
<form:password path="password" class="input-block-level" placeholder="Password" /> 

<form:label path="password2"><s:message code="repeat_password" /> </form:label> 
<form:errors path="password2" element="div" class="text-error"/> 
<form:password path="password2" class="input-block-level" placeholder="Password" /> 

지금이

import org.hibernate.validator.constraints.*; 

/*...*/ 

@NotBlank(message = SignupForm.NOT_BLANK_MESSAGE) 
@Email(message = SignupForm.EMAIL_MESSAGE) 
private String email; 

@NotBlank(message = SignupForm.NOT_BLANK_MESSAGE) 
@Length(min = 6, message = SignupForm.PASSWORD_LENGTH_TOO_SHORT_MESSAGE) 
private String password; 

과를 heres 내 JSP와 같은 주석 일부 콩을 가지고

Password 
Password must be at least 6 characters long 
The value may not be empty! 

password 필드의 경우 두 유효성 검사기에서 오류가 발생합니다. 이는 매우 바람직하지 않습니다. email 필드의 경우 빈 문자열이 유효한 전자 메일 주소 (?!)이며 그 이유는 단지 한 번에 하나의 메시지 만 받는다는 점입니다.

따라서 지정된 순서로 유효성 검사를 실행하고 첫 번째 실패 후 처리를 중지하거나 첫 번째 메시지 만받을 수 있습니까?

답변

0

Bean 유효성 검사 사양은 정렬 된 유효성을 정의하는 그룹 시퀀스를 정의합니다. 아이디어는 암호전자 메일에 대한 시퀀스를 정의한 다음 값의 유효성을 검사 할 때 올바른 그룹 시퀀스를 유효성 검사기에 전달해야 할 것이라고 생각합니다. 그러나 JSF에서 올바른 그룹을 지정/대상 지정하는 방법을 알지 못합니다.

이 문제에 대한보다 구체적으로, 당신은 당신의 제약 조건을 표현하는 하나의 @Pattern 제약 조건을 사용할 수 있습니다 또는 사용자 정의 @Password 제약 물품. 후자의 경우에는 제약 조건 구성과 @ ReportAsAsingleViolation을 활용할 수 있습니다.