Что аннотация @Valid указывает на Spring?

Вы можете попробовать это

Примечание: это не проверено

SELECT  *   
FROM    (
            SELECT
                  P.LegacyKey AS LegacyKey,
                  D.DesignNumber AS DesignNumber,
                  COUNT([P].[LegacyKey]) AS cnt
             FROM tbl1 AS [SO]
             GROUP BY D.DesignNumber,P.LegacyKey
             HAVING COUNT([P].[LegacyKey])  = 1
        ) a
WHERE   COUNT() OVER (PARTITION BY LegacyKey) = 1
70
задан Mehraj Malik 23 March 2017 в 12:51
поделиться

5 ответов

Это для проверки.

Валидация модель после привязки к ней пользовательского ввода. Spring 3 обеспечивает поддержку декларативная проверка с помощью JSR-303. Эта поддержка включается автоматически если поставщик JSR-303, например Спящий валидатор присутствует на ваш путь к классам. При включении вы можете инициировать проверку, просто аннотирование метода контроллера параметр с аннотацией @Valid: После привязки входящего POST параметры, форма AppointmentForm будет пройти валидацию; в этом случае для проверки значение поля даты не равно нулю и произойдет в будущем.


Дополнительную информацию см. здесь:
http://blog.springsource.com/2009/11/17/spring-3-type-conversion-and-validation/

57
ответ дан 24 November 2019 в 13:27
поделиться

Добавляя ответы выше, взгляните на следующее. Столбец AppointmentForm date аннотирован парой аннотаций. Имея аннотацию @Valid, которая запускает проверки на AppointmentForm (в данном случае @NotNull и @Future). Эти аннотации могут исходить от разных провайдеров JSR-303 (например, Hibernate, Spring ... и т. Д.).

    @RequestMapping(value = "/appointments", method = RequestMethod.POST)
    public String add(@Valid AppointmentForm form, BindingResult result) {
        ....
    }

    static class AppointmentForm {

        @NotNull @Future
        private Date date;
    }
28
ответ дан 24 November 2019 в 13:27
поделиться

@Valid само по себе не имеет ничего общего с весной. Это часть спецификации Bean Validation (есть несколько из них, последняя из которых - JSR 380 на второе полугодие 2017 года), но @Valid очень старая и полностью основана на JSR 303.

Как мы все знаем, Spring очень хорош в обеспечении интеграции со всеми различными JSR и библиотеками Java в целом (например, JPA, JTA, Caching и т. Д.), И, конечно, эти ребята также позаботились о проверке. Одним из ключевых компонентов, способствующих этому, является MethodValidationPostProcessor .

Попытка ответить на ваш вопрос - @Valid очень удобен для так называемого каскадного валидации, когда вы хотите проверить сложный граф, а не только элементы верхнего уровня объекта. Каждый раз, когда вы хотите пойти глубже, вы должны использовать @Valid. Это то, что диктует JSR. Spring выполнит это с некоторыми незначительными отклонениями (например, я попытался поместить @Validated вместо @Valid в метод RestController и проверки работоспособности, но то же самое не будет применяться к обычным «служебным» компонентам).

13
ответ дан 24 November 2019 в 13:27
поделиться

Просто добавив к вышеупомянутому ответу, В веб-приложении @valid используется, где проверяемый компонент также аннотирован аннотациями проверки, например, @NotNull, @Email (спящая аннотация), поэтому, когда при получении ввода от пользователя значения могут быть проверены, и результат привязки будет иметь результаты проверки. bindingResult.hasErrors() сообщит, не прошла ли проверка.

1
ответ дан 24 November 2019 в 13:27
поделиться

IIRC @Valid — это не аннотация Spring, а аннотация JSR-303 (которая является стандартом проверки компонентов). Что он делает, так это в основном проверяет, являются ли данные, которые вы отправляете методу, действительными или нет (он проверит scriptFile для вас).

14
ответ дан 24 November 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: