hibernate Validator не проверяет класс модели

Этот вопрос задавался много раз, даже после того, как я рассмотрел все решения, я не смог заставить работать валидатор гибернации.

Класс контроллера: -

@RequestMapping(value={"/setReg"},method={RequestMethod.GET,RequestMethod.POST})
public ModelAndView setRegistration( @Valid @ModelAttribute("userDetails") UserDetails userDetails,BindingResult bindingResult){
logger.info("setRegistration :Entry");
if(bindingResult.hasErrors()){
logger.info("binding success"); 
logger.info(userDetails.getUser_first_name());
logger.info("validation not working");
}
else{
logger.info("binding failure"); 
}
logger.info("setRegistration :Exit");
return null;    
}

сервлет-контекст: -

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
        <context:component-scan base-package="com.xmith.services"/>
        <context:component-scan base-package="com.xmith.dao"/>
        <context:component-scan base-package="com.xmith.models"/>
        <context:component-scan base-package="com.xmith.sweb" />
    <context:annotation-config/>

    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

зависимость: -

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>

класс проверки: -

public class UserDetails {
private String user_id;
@Size(min=3,max=7,message="user first name must have max length 7")
private String user_first_name;
private String user_last_name;
private String user_age;
private String user_email;
private String user_password;

Примечание:- в приведенном выше коде я пытаюсь проверить "user_first_name" (min=3,max=7,message="имя пользователя должно иметь максимальную длину 7"), однако, когда я ввожу ввод больше чем 7, он по-прежнему устанавливает «user_first_name».

выход:---

17:33:12.399 [http-bio-8080-exec-1] DEBUG org.hibernate.validator.resourceloading.PlatformResourceBundleLocator — ValidationMessages не найден. 17:33:12.401 [http-bio-8080-exec-1] DEBUG org.hibernate.validator.resourceloading.PlatformResourceBundleLocator — ContributorValidationMessages не найден. 17:33:12.403 [http-bio-8080-exec-1] ОТЛАДКА org.hibernate.validator.resourceloading.PlatformResourceBundleLocator — org.hibernate.validator.ValidationMessages найдено. 17:33:12.417 [http-bio-8080-exec-1] ИНФОРМАЦИЯ com.xmith.sweb.HomeController - setRegistration :Entry 17:33:12.418 [http-bio-8080-exec-1] ИНФОРМАЦИЯ com.xmith.sweb .HomeController — успешное связывание 17:33:12.418 [http-bio-8080-exec-1] INFO com.xmith.sweb.HomeController — qwertyuiiii 17:33:12.418 [http-bio-8080-exec-1] INFO com.xmith.sweb.HomeController — проверка не работает 17:33:12.418 [http-bio-8080-exec-1] INFO com.xmith .sweb.HomeController - setRegistration :Exit

Что я здесь упустил?


person smith    schedule 15.07.2018    source источник
comment
Вы печатаете успешную привязку, и проверка не работает внутри if(bindingResult.hasErrors()). Это просто ваша логическая логика неверна.   -  person JB Nizet    schedule 15.07.2018
comment
благодарить. Такая хромая ошибка, мой плохой.   -  person smith    schedule 15.07.2018


Ответы (1)


моя логическая логика была ошибочной, как указал JB Nizet

person smith    schedule 15.07.2018