0
在我的學生類中,我有很多字段,我存儲在數據庫中,我也有一個字段來存儲照片(爲此我使用MultiPartFile數據類型),我使用自定義驗證驗證此字段。自定義bean驗證不工作
下面是驗證
@Component
public class PhotoValidator implements Validator{
@Override
public boolean supports(Class<?> clazz) {
return Student.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
Student student=(Student)target;
if(student.getStudentPhoto()!=null){
if(student.getStudentPhoto().getSize()==0){
errors.rejectValue("file", "missing.file");
}
}
if(!student.getStudentPhoto().getOriginalFilename().endsWith(".jpg")){
errors.rejectValue("file", "invalid.file");
}
}
}
代碼在控制器我喜歡這個
@InitBinder
protected void initBinderStudent(WebDataBinder binder) { binder.setValidator(photoValidator);
}
我的學生模型實現它: - 照片的
@Entity
@Table(name = "STUDENT")
public class Student extends UrlEntity {
@Transient
MultipartFile studentPhoto;
@Column(name = "COURSE_TYPE", nullable = false)
@NotNull(message = "Course Type: Course Type can not be left blank")
private in.jmi.constants.CourseType courseType;
@OneToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "STUDENT_USER")
@Valid
private User user;
這種自定義的驗證沒有工作,它也弄亂了我在這裏的其他基於註解的驗證。
我已經檢查了很多帖子在stackoverflow但找不到任何關係到這個特定的問題。
注意:如果我從控制器中刪除驗證代碼,代碼可以很好地執行所有它應該執行的驗證。
我已經分別實現了上面的代碼,它運行,這裏是我從哪裏學習這個網站http://websystique.com/springmvc/spring-mvc-4-file-upload-example-using-commons- fileupload /,問題是當我在我的應用程序中實現它不運行時。 ==>我想實現的是驗證.jpg和空文件是它。 –