2015-08-16 1 views
-1

Студент:Почему валидация уровня метода не работает весной? Класс

package com.solvegen.education.student.enrollment.core.model; 

import com.sun.istack.internal.NotNull; 

import java.util.Date; 

public class Student { 
    private Long id; 

    @NotNull 
    private String userName; 

    @NotNull 
    private String firstName; 

    @NotNull 
    private String lastName; 

    @NotNull 
    private String password; 

    @NotNull 
    private String emailAddress; 

    @NotNull 
    private Date dateOfBirth; 

    public Date getDateOfBirth() { 
     return dateOfBirth; 
    } 

    public String getEmailAddress() { 
     return emailAddress; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public Long getId() { 
     return id; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public String getUserName() { 
     return userName; 
    } 

    public void setDateOfBirth(Date dateOfBirth) { 
     this.dateOfBirth = dateOfBirth; 
    } 

    public void setEmailAddress(String emailAddress) { 
     this.emailAddress = emailAddress; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

} 

Содержание весенне-config.xml

<bean id="validator" 
     class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
    <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> 
</bean> 
<bean id="validatorPostProcessor" 
     class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"> 
    <property name="validator" ref="validator"/> 
</bean> 

Определение Весеннее службы:

@Service("studentService") 
@Validated 
public class StudentService { 

    @Autowired 
    private StudentMapper studentMapper; 

    @Transactional 
    public void insertStudent(@Valid Student student) { 
     studentMapper.insertStudent(student); 
    } 
} 

содержимое pom.xml

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>5.2.1.Final</version> 
</dependency> 
<dependency> 
    <groupId>javax.el</groupId> 
    <artifactId>javax.el-api</artifactId> 
    <version>2.2.4</version> 
</dependency> 

<dependency> 
    <groupId>org.mybatis</groupId> 
    <artifactId>mybatis</artifactId> 
    <version>3.2.7</version> 
</dependency> 
<dependency> 
    <groupId>org.mybatis</groupId> 
    <artifactId>mybatis-spring</artifactId> 
    <version>1.2.2</version> 
</dependency> 

Когда я использую @NotNull вместо @Valid в объявлении метода все работает нормально (Validation Framework генерирует исключение, когда я передаю null вместо экземпляра класса Student).

Что я делаю неправильно? Или проверка уровня метода в String не поддерживает @Valid аннотацию для параметров?

+0

Я не понимаю вопроса. Что вы делаете, что вы ожидаете, и что происходит вместо этого? –

+0

Простите все. Проблема была в com.sun.istack.internal.NotNull. Я импортировал из неправильного пакета. Должно быть javax.validation.constraints.NotNull –

ответ

0

Проблема была в com.sun.istack.internal.NotNull. Я импортировал из неправильного пакета. Должно быть javax.validation.constraints.NotNull

Смежные вопросы