Hibernate Validator не работает, но я не знаю почему - PullRequest
0 голосов
/ 28 июня 2018

Я добавил несколько аннотаций ограничений для класса модели:

public class Items {
    private Integer id;

    @Size(min=1,max=30,message="${items.name.length.error}")
    private String name;

    private Float price;

    @NotNull(message="${items.createTime.isNUll}")
    private Date createTime;

    // setters and getter 
}

public class ItemsCustom extends Items {

    // add some new details

}

Я также установил XML-файл конфигурации:

<mvc:annotation-driven
    conversion-service="conversionService" validator="validator"></mvc:annotation-driven>

<bean id="validator"
    class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass"
        value="org.hibernate.validator.HibernateValidator" />
    <property name="validationMessageSource" ref="messageSource" />
</bean>
<bean id="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>classpath:CustomValidationMessages</value>
        </list>
    </property>
    <property name="fileEncodings" value="utf-8" />
    <property name="cacheSeconds" value="120" />
</bean>

А это CustomValidationMessages.properties:

items.name.length.error=the length of name must be more than 1 character and less than 30 characters 
items.createTime.isNUll=the create time must be not null

Это контроллер:

@RequestMapping(value="/submitItems",method=RequestMethod.POST)
public ModelAndView submitItems(@Validated ItemsCustom itemsCustom,BindingResult bindingResult) throws Exception{

    List<ObjectError> errors = bindingResult.getAllErrors(); 
    if(bindingResult.hasErrors()) {
        System.out.println();
        for(ObjectError e : errors) {
            System.out.println(e.getDefaultMessage());
        }
    }

    ModelAndView mav = new ModelAndView();
    // some process...
    return mav;
}

Я думаю, что все готово, но это не работает! Кто-нибудь помогает?

1 Ответ

0 голосов
/ 28 июня 2018

изменить аннотацию внутри контроллера @Validated на @ Valid

import javax.validation.Valid;
...