我想使用Spring Validation和Annotations來驗證我的表單數據。 所以我有以下對象,例如:Spring Form Validation驗證數據庫插入?
@Entity
@ComponentScan
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
@NotEmpty
private String type;
...
}
正如你可以在這裏看到我的type
String用於@NotEmpty
。我只想用這個來驗證我的表單。它不應該對數據庫插入進行驗證。
所以,當我這樣做:
@RequestMapping(value = "/myForm", method = RequestMethod.POST)
public String categoryPOST(HttpServletRequest request, Model model, @Valid Category category, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}
這是工作,我希望它的工作。但是,當我要創建一個虛擬對象:
Category category = new Category();
和我進行保存空對象:
this.category_repository.save(category);
我的錯誤(只是其中的重要組成部分):
Caused by: javax.validation.ConstraintViolationException: Validation failed for classes [my.project.jpa.entity.Category] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='darf nicht leer sein', propertyPath=type, rootBeanClass=class my.project.jpa.entity.Category, messageTemplate='{org.hibernate.validator.constraints.NotEmpty.message}'}
]
而這不是我想要的。我想使用註解進行表單驗證,但我不希望驗證在數據庫操作上執行。
是不是有可能?
信息
我使用了相同的結果:
javax.validation.constraints.NotNull;
註解。
順便說一句,'@對實體ComponentScan'註釋看起來很奇怪。你確定你需要它嗎? –
不,不確定。對春天來說是全新的。 – Mulgard
最有可能你可以刪除它:http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-scanning-autodetection –