我有一个用 JSR-303 注释的简单模型
public class Article {
...
@NotNull
private String tag;
...
}
tag
字段不会暴露在表单中,而是填充在 Controller 的方法中
public class ArticleController {
...
@RequestMapping(value = "/edit", method = PUT)
public String doEdit(@Valid @ModelAttribute("article") final Article article,
final BindingResult bindingResult) {
// generates article's tag, not editable by user
article.setTag(generateTag(article));
if (bindingResult.hasErrors()) {
return "/edit";
} else {
service.save(article);
return "redirect:/list";
}
}
现在 bindingResult
在 tag
字段上始终没有 null 错误,因为 bean 在设置之前进行了验证。在设置 tag
归档并填充正确的 bindingResult
后,如何重新验证文章 bean?
最佳答案
尝试使用
public class ArticleController {
// inject the spring validator.
@Autowired
private LocalValidatorFactoryBean validator;
@RequestMapping(value = "/edit", method = PUT)
public String doEdit(@ModelAttribute("article") final Article article,
final BindingResult bindingResult) {
// generates article's tag, not editable by user
article.setTag(generateTag(article));
// validate
validator.validate(article, bindingResult);
if (bindingResult.hasErrors()) {
return "/edit";
} else {
service.save(article);
return "redirect:/list";
}
}
}
关于java - 如何在表单对象上重新运行 Bean 验证? (Spring 4 MVC Controller ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701279/