2013-03-13 3 views
2

Я хотел бы знать, можно ли остановить выполнение других валидаторов, пока один не удалось?Проверка валика - прекратить проверку при первой ошибке

У меня есть фасоль, аннотированный как этот

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; 

и ЭРВО мой JSP

<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" /> 

Теперь - на моей странице, когда я пытаюсь представить пустую форму я получаю

E-mail 
The value may not be empty! 

и

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

Для поля password Я получаю ошибки от обоих валидаторов - что совершенно нежелательно. В поле email Я понимаю, что пустая строка является допустимым адресом электронной почты (?!), И поэтому я получаю только одно сообщение в то время.

Так можно ли выполнить проверки в указанном порядке и прекратить обработку после первого сбоя или получить только первое сообщение?

ответ

0

Спецификация проверки бина определяет групповые последовательности для определения упорядоченной проверки. Идея состоит в том, что вы определяете последовательности для пароля и по электронной почте, а затем, когда вы проверяете значение, необходимое для передачи правильной групповой последовательности валидатору. Тем не менее, я не знаю, как указать/настроить правильную группу в JSF.

Чтобы быть более конкретным вашей проблемы, вы могли бы использовать единую @Pattern ограничение выразить свое ограничение или писать пользовательские @Password зависимости. В последнем случае вы можете использовать сочетание ограничений и @ReportAsSingleViolation.

Смежные вопросы