vde*_*ris 9 spring spring-mvc spring-annotations spring-data
使用@ModelAttribute
和有@Valid
什么好处?
哪些是差异?
可以一起使用它们吗?
Cod*_*imp 16
@ModelAttribute
用于将方法参数或方法返回类型映射/绑定到命名的模型属性.请参阅@ModelAttribute的JavaDoc.这是一个Spring注释.
@Valid
是一个注释,标记JSR-303 bean验证的对象.请参阅@Valid的JavaDoc.它是JavaEE 6的一部分,但我认为Hibernate有一个早期的实现,大多数人都使用它.
使用的优点@ModelAttribute
是您可以将表单的输入映射到bean.优点@Valid
是您可以利用JSR-303 bean验证来确保根据某些规则验证所生成的bean.
是的,你可以使用@ModelAttribute
和@Valid
在一起.
将数据从表单(sic View)传输到Model对象的最佳方法是使用Spring遵循典型/传统的MVC设计模式.我个人首选的方法是在带有Spring JSTL <form:*>
标记的JSP中使用一个表单modelAttribute
.在Controller上,有一个处理程序来接受来自表单的POST,该表单的匹配@ModelAttribute
是表示表单输入的bean.然后我会将"Form Bean"传递给服务层来做一些事情,包括在需要时将"Form Bean"翻译成任何模型(如果表单直接创建模型对象则不需要)以及保存/更新/ etc一个DAO.这只是一种做事的方式,但这可能是我在日常工作中使用Spring做的大部分工作.
我强烈建议您阅读Spring参考资料并按照教程进行操作.参考资料写得很好,易于理解,并且包含了很多关于Spring中可以做的事情的例子,而且在Spring中你通常会有很多选择.
请查看以下部分的弹簧参考文档:
除了数据绑定之外,您还可以使用自己的自定义验证程序调用验证,该验证程序传递用于记录数据绑定错误的相同BindingResult.这允许数据绑定和验证错误在一个地方累积,然后报告给用户:
@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pet") Pet pet, BindingResult result) {
new PetValidator().validate(pet, result);
if (result.hasErrors()) {
return "petForm";
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过添加JSR-303 @Valid注释自动调用验证:
@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@Valid @ModelAttribute("pet") Pet pet, BindingResult result) {
if (result.hasErrors()) {
return "petForm";
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23097 次 |
最近记录: |