Моя проверка не работает, вызов hasErrors не возвращает false:
if(bindingResult.hasErrors()) {
...
}
Вот мои настройки:
Используя spring mvc, мойВ модуле models есть класс Account:
@Entity
@Table(name = "accounts")
public class Account {
@Id
@GeneratedValue
private int id;
private int rootUserId;
@Size(min=3, max=50, message="Username must be between 3 and 50 characters long.")
private String name;
..
}
В контроллере моего аккаунта есть действие создания, на которое отправляется моя форма:
@RequestMapping(value = "/create", method = RequestMethod.POST)
public ModelAndView create(@Valid Account account, BindingResult bindingResult) {
ModelAndView mav = new ModelAndView("accounts/new");
account.setName("a");
if(bindingResult.hasErrors()) {
return mav;
}
mav.setViewName("/test/");
return mav; // TODO should be redirecting, but not working b/c of MaV return value
}
В настоящее время я не использую никаких помощников формыв моей разметке freemarker, и когда он попадает в контроллер, учетная запись не была инициализирована.Поэтому сейчас я просто вручную устанавливаю для свойства name значение «a», что должно привести к сбою проверки, но это не так.
Мой bean-компонент (я думаю) подключен в моем bean-компоненте sessionFactory здесь:
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--<property name="packagesToScan" value="com.test.models" />-->
<property name="configLocation" value="/WEB-INF/config/hibernate.cfg.xml"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.query.substitutions=true 'Y', false 'N'
hibernate.show_sql=true
hibernate.hbm2ddl.auto=update
</value>
</property>
<property name="annotatedClasses">
<list>
<value>com.test.models.Account</value>
</list>
</property>
</bean>
Фактические аннотации валидации используют javax.validations, в моих моделях pom.xml:
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0-rev-1</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
Почему мои валидации не проверяются?
По какой-то причине Spring не забирает мою учетную запись ??
PS: Как должен выглядеть ввод html, чтобы он активировал объект Account во время публикации?Я пробовал:
<input type="texT" ... name="account[name]" />
А также:
name="account.name"
Каким он должен быть?