当前位置: 首页 > 知识库问答 >
问题:

Spring批注@ModelAtinn和@Valid

薛淮晨
2023-03-14

使用@ModelAt0016@Valid的优点是什么?

有什么不同?

可以一起使用吗?

共有2个答案

谭山
2023-03-14

请检查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";
    }

    // ...
}

也可以通过添加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";
    }

    // ...

}
纪实
2023-03-14

@modeldattribute用于将方法参数或方法返回类型映射/绑定到命名的模型属性。请参阅@modeldattributes JavaDoc。这是一个Spring注释。

@Valid是标记JSR-303 bean验证对象的注释。请参阅@Valids JavaDoc。它是JavaEE6的一部分,但我认为Hibernate有一个大多数人使用的早期实现。

使用@ModelAt0016的优点是可以将表单的输入映射到bean。@Valid的优点是,您可以利用JSR-303 bean验证来确保根据某些规则集对生成的bean进行验证。

是的,您可以一起使用@ModelAt0016@Valid

数据从表单(sic视图)传输到模型对象的最佳方式是使用Spring遵循典型/传统的MVC设计模式。我个人更喜欢的方式是使用SpringJSTLJSP创建表单

我强烈建议您阅读Spring参考资料并遵循教程。参考资料写得很好,很容易理解,并且包含了很多关于你在Spring中可以做事情的各种方法的例子,而且通常有很多关于你在Spring中如何做事情的选项。

 类似资料:
  • 问题内容: 我有一个代码: 我期望一旦启动应用程序BeanSample.getSomeBean(),然后SomeBean将开始由“ someBean”提供。 现在我有一个错误: 没有定义名为“ someBean”的bean 实际上,我有点不明白应该使用哪个应用程序上下文来提取我的豆子? 关于@Configuration : 有什么原因,为什么我应该在这里使用@Configuration注释?(通过

  • 问题内容: 有人可以在Spring 3中解释@RequestBody和@ResponseBody注释吗?他们是干什么的?任何例子都很好。 问题答案: 在文档中有一个名为16.3.3.4的完整章节,其中将请求主体与@RequestBody批注进行映射。还有一个叫做16.3.3.5的映射,它使用@ResponseBody注释映射响应主体。我建议你查阅这些部分。也相关:@RequestBodyjavad

  • 问题内容: 我是Spring的新手,我想知道: 我有一个用(spring)注释的java类,并且在内部有一个用注释的方法。然后,该类由另一个类中的带注释字段引用。我可以假定仅在调用后才注入类吗? 问题答案: 如果您问的是在该bean被调用之后发生了给定类的注入,那么答案是肯定的- 在bean被视为“可注入”之前执行 如果您询问是否在所有注入都完成之后(在同一个bean上)在给定bean上执行-是-

  • 问题内容: 有没有人有很好的Spring Batch(使用批注)示例来缓存可供处理器访问的参考表? 我只需要一个简单的缓存,运行一个查询,该查询返回一些byte []并将其保留在内存中,直到执行作业。 感谢有关此主题的任何帮助。 谢谢 ! 问题答案: 可以使用A 在执行作业之前用参考数据填充高速缓存,并在作业完成后清除高速缓存。 这是一个例子: 执行后,将打印: 这意味着可以从缓存中正确检索数据。

  • 问题内容: 我正在阅读使用Spring框架进行的事务管理。在第一个组合中,我使用了Spring + hiberante,并使用了Hibernate的API来控制事务(Hibenate API)。接下来,我想使用注释进行测试,它确实起作用。 我对此感到困惑: JPA,JTA,Hibernate是否具有它们自己的事务管理方式。例如,考虑如果我使用Spring + Hibernate,在那种情况下您会使

  • 我用一个简单的post和get方法编写了一个非常简单的控制器类。 今天是我第一次使用Postman-我不知道我做错了什么,但每次使用POST映射,我都会得到: 控制器类别: 我添加了一个< code>@RequestBody,但它仍然说它丢失了。 如何解决这个麻烦?