В моем приложении есть пользовательский объект, который мне нужно проверить.
public class User {
private String userName;
private String password;
public void setUserName(String userName){
this.userName = userName;
}
public getUserName(){
return this.userName;
}
// and so on
}
Для этого я создал UsersValidator, как показано ниже.
public class UserValidator implements Validator {
public boolean supports(Class clazz) {
return User.class.equals(clazz);
}
public void validate(Object obj, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userName", "field.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.required");
}
}
, и у меня есть такой контроллер
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String home(@Valid User user,
BindingResult result) {
if (result.hasErrors()) {
return "loginForm";
} else {
//continue
}
}
Результат привязки не имеет ошибок.
Что еще мне нужно сделать, чтобы проверка работала?Нужно ли вносить какие-либо изменения в контроллер или файл конфигурации пружины.
<mvc:annotation-driven />
<context:component-scan base-package="com.myapp" />
<mvc:resources location="/resources/" mapping="/resources/**" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.tiles2.TilesView</value>
</property>
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>com/dimex/resourceBundles/ApplicationResources</value>
<value>com/dimex/resourceBundles/errors</value>
</list>
</property>
</bean>
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="locale"></property>
</bean>
</mvc:interceptors>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
РЕДАКТИРОВАТЬ: -
Нужно ли иметь валидатор гибернации в моем пути к классам.Мы не используем Hibernate в нашем приложении.Пожалуйста, помогите.
EDIT2: -
Когда я использую аннотации проверки (@NotNull, @Size и т. Д.) Непосредственно в моем классе сущности, тогда аннотации @Valid в контроллере работают, ноесли я удаляю их из своих сущностей и пытаюсь использовать валидатор, написанный выше, то @Valid не работает.
Разве аннотации @Valid работают только с аннотацией валидации только в сущностях, а не с валидаторами?Для того, чтобы использовать мои валидаторы, мне придется напрямую вызывать метод validate в моем валидаторе?