spring-mvc - @ActionMapping、@RequestMapping、@Rendermapping的区别

标签 spring-mvc annotations spring-portlet-mvc

我不太清楚@RequestMapping@ActionMapping@RenderMapping之间的区别。似乎以上所有内容最终都将请求 url 映射到 Controller 中的实际方法。那么区别是什么呢?哪些可以通过 @Rendermapping 完成而不能通过 @Requestmapping 完成?

最佳答案

@RequestMapping 允许您指定模式(编辑、查看等)和许多其他选项(尽管不是窗口状态)。 @RenderMapping 允许您仅指定请求参数和窗口状态(MAXIMISED、NORMAL 等),并且是指示渲染请求映射的便捷方法。您可以在同一个类上使用这两个注释。例如,您可以在类级别使用 RequestMapping 进行注释,以指示它为 VIEW 模式的请求提供服务,然后在方法级别使用 @RenderMapping (或 @ActionMapping)注释特定请求的处理程序> 或@ResourceMapping)。

现在谈论不同类型的请求可能会有所帮助。

呈现请求用于呈现 HTML,因此通常您会显示 JSP 或某种其他类型的 View 。

操作请求用于执行修改数据、上传文件等操作。需要注意的是,每个操作请求后面都会跟着一个渲染请求。因此,如果您的页面上有两个 portlet,并且您向第一个 portlet 发出操作请求,则该 portlet 将收到一个操作请求,然后是一个呈现请求。 Portlet 2 将只接收渲染请求。

还有另一种类型的请求您也没有提及,但它也很有趣

资源请求可用于呈现其他内容类型。 AJAX 是资源请求的常见用例,因为它们适合返回 JSON 或 XML。

事件请求也存在并且可用于 portlet 间的通信。

我可以推荐 Spring portlet docs 。尽管它们没有很好地涵盖注释,但它们确实解释了不同的请求类型,并且您应该能够使用该信息来计算注释。

注意。如果您愿意,您可以使用@RequestMapping来定义渲染、操作和资源请求,但是@RenderMapping @ActionMapping@ResourceMapping 提供了更方便的方法。

关于spring-mvc - @ActionMapping、@RequestMapping、@Rendermapping的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15887753/

相关文章:

java - Thymeleaf 选择标签导致异常

java - 使用 JaxB 解码时出现问题

java - 注释由生产者注入(inject)的变量

javascript - Spring Portlet Jquery Ajax 发布到 Controller

java - Liferay : Configuring Multiple Spring MVC Portlets in one liferay plugin project

java - 如何在 Spring MVC 中检索 ErrorField 的错误消息

java - 如何在 spring mvc 中验证电子邮件 ID 是否存在?

java - spring boot如何从自定义yml加载属性

java - 一个元素上有多个相同类型的注释?

java - 使用@ResourceMapping 和@ModelAttribute 在 Spring Portlet Controller 中访问 RequestBody