Проверка Spring MVC не работает (аннотация)

#java #spring #validation #spring-mvc

#java #весна #проверка #spring-mvc

Вопрос:

Я пытаюсь использовать проверку аннотаций, но она не работает. Вот мой интерфейс службы, в котором я применяю проверку:

 package com.tehras.web.service;

import com.tehras.web.annotations.ValidCategory;
import com.tehras.web.models.MenuCategory;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import java.util.List;

/**
 * Created by Taras on 6/17/2014.
 */
@Validated
@Service
public interface IMenuCategoriesService {

    /*
     @Return List<MenuCategory>
     */
    public List<MenuCategory> getMenuCategories();
    /*
    @Return boolean
     */
    public boolean addMenuCategory(@ValidCategory MenuCategory menuCategory);
    /*
    @Return boolean
     */
    public boolean removeMenuCategories(List<MenuCategory> menuCategoryList);

    public boolean containsCategoryName(String categoryName);
}
 

И вот мой класс проверки

 @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {ValidCategoryImpl.class, ValidCategoryNameImpl.class})
public @interface ValidCategory {
        String message() default "This Category Does not Seem to Allowed";

        Class<?>[] groups() default { };

        Class<? extends Payload>[] payload() default { };
}
 

И, наконец, мой класс Impl:

 @Component
public class ValidCategoryImpl implements ConstraintValidator<ValidCategory, MenuCategory> {

    @Autowired
    IMenuCategoriesService menuCategoriesService;

    @Override
    public void initialize(ValidCategory constraintAnnotation){
    }

    @Override
    public boolean isValid(MenuCategory menuCategory, ConstraintValidatorContext context){
        return menuCategoriesService.containsCategoryName(menuCategory.getTitle());
    }
}
 

Пожалуйста, помогите! Я застрял на этом и не могу это исправить!
Когда я передаю MenuCategory, он даже не переходит в метод проверки? пожалуйста, помогите!

.. Не могу добавить комментарий, но чтобы ответить на вопрос «почему», это то, что я думаю:

Подобно тому, как вызываются @NotNull или @Size , я создал свой пользовательский класс, где моей реализацией является this — ConstraintValidator , поэтому, когда есть MenuCategory, он должен перейти в этот метод реализации, поскольку у меня есть настройка @ValidCategory для этого. Каково ваше мнение? Как мне убедиться, что проверка выполняется?

Комментарии:

1. Как вы думаете, почему он должен выполнять какую-либо проверку?

2. Где addMenuCategory() вызывается?

3. @ValidCategory должен проверять общедоступную логическую addMenuCategory(@ValidCategory MenuCategory MenuCategory);

4. Почему вы так думаете?

5. Нет, это совершенно не связанный элемент конфигурации.