Печатать сообщение @NotBlank только в том случае, если поле не пустое

1

Я построил систему проверки формы с использованием Spring mvc. Это мой объект Пользователь

public class User{

    @NotEmpty   
    @NotBlank
    @Size(min=3,max=20)
    private String name;    
.....
}

Пока, если вы не заполните поле "имя", вы получите 3 сообщения:

  1. не может быть пустым
  2. может не быть пустым
  3. размер должен быть от 3 до 20

Есть ли способ, например, получить сообщение 2, только если сообщение 1 не отправлено?

Я объясняю лучше: если пользователь не заполняет поле, я просто хочу напечатать сообщение "не может быть пустым". Затем, если пользователь заполняет поле пробелами, я хочу напечатать сообщение "может быть не пустым". Затем, если поле заполнено (тогда оно не пусто) и не содержит пробелов (тогда это не пусто), я хочу напечатать сообщение размера.

Есть ли способ справиться с этой проблемой с аннотацией или мне нужно создать свой собственный класс валидатора?

Я просмотрел его в Интернете, но я не нашел решения, возможно, потому, что трудно объяснить Google, что искать.

Теги:
jsp
spring

2 ответа

1

Вы можете использовать group и @GroupSequence для выполнения вашего валидатора:

http://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-usingvalidator.html#validator-usingvalidator-validationgroups

0

Вы можете создать свою собственную аннотацию и использовать мета-ограничение @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 {};
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню