Я построил систему проверки формы с использованием Spring mvc. Это мой объект Пользователь
public class User{
@NotEmpty
@NotBlank
@Size(min=3,max=20)
private String name;
.....
}
Пока, если вы не заполните поле "имя", вы получите 3 сообщения:
Есть ли способ, например, получить сообщение 2, только если сообщение 1 не отправлено?
Я объясняю лучше: если пользователь не заполняет поле, я просто хочу напечатать сообщение "не может быть пустым". Затем, если пользователь заполняет поле пробелами, я хочу напечатать сообщение "может быть не пустым". Затем, если поле заполнено (тогда оно не пусто) и не содержит пробелов (тогда это не пусто), я хочу напечатать сообщение размера.
Есть ли способ справиться с этой проблемой с аннотацией или мне нужно создать свой собственный класс валидатора?
Я просмотрел его в Интернете, но я не нашел решения, возможно, потому, что трудно объяснить Google, что искать.
Вы можете использовать group
и @GroupSequence
для выполнения вашего валидатора:
Вы можете создать свою собственную аннотацию и использовать мета-ограничение @ReportAsSingleViolation.
взгляните на эти сайты
http://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html/validator-customconstraints.html http://docs.jboss.org/hibernate/validator/4.0.1/reference/en -US/HTML/валидатор-customconstraints.html
Таким образом, ваш код может выглядеть
@ReportAsSingleViolation
@NotEmpty
@NotBlank
@Length(min = 3, max = 20)
public @interface CustomAnnotation {
public abstract String message() default "{customkey}";
public abstract Class<?>[] groups() default {};
public abstract Class<?>[] payload() default {};
}