2015-08-16 71 views
-1

Student類:爲什麼方法級別驗證在Spring中不起作用?

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中Spring事務的

<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> 

定義的內容:

的pom.xml的
@Service("studentService") 
@Validated 
public class StudentService { 

    @Autowired 
    private StudentMapper studentMapper; 

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

內容

<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時,所有工作都正常(當我傳遞null而不是Student類的實例時,Validation Framework會拋出異常)。

我在做什麼錯?或者String中的方法級別驗證不支持參數的@Valid註解?

+0

我不明白這個問題。你在做什麼,你期望發生什麼,取而代之的是什麼? –

+0

對不起每一個。問題出在com.sun.istack.internal.NotNull。我從不正確的包中導入。必須是javax.validation.constraints.NotNull –

回答

0

問題出在com.sun.istack.internal.NotNull。我從不正確的包中導入。必須是javax.validation.constraints.NotNull

相關問題