@RequestMapping@ActionMapping@RenderMapping之间的区别对我来说不是很清楚。看来上述所有方法最终都将请求url映射到 Controller 中的实际方法。那么区别是什么呢? @Rendermapping可以完成哪些工作,而@Requestmapping不能完成什么工作?

最佳答案

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

现在说一下不同类型的请求可能会有所帮助。

渲染请求用于渲染HTML,因此通常您将显示JSP或其他类型的 View 。

Action 请求用于执行诸如修改数据,上传文件等 Action 。重要的是要注意,每个 Action 请求后均带有渲染请求。因此,如果页面上有两个portlet,并且向一个portlet发出了一个 Action 请求,那么它将收到一个 Action 请求,然后是一个渲染请求。 Portlet 2只会收到一个渲染请求。

您没有提到另一种要求,这也很有趣

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

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

我可以推荐Spring portlet docs。尽管它们不能很好地覆盖注释,但是它们确实解释了不同的请求类型,您应该能够使用该信息来编制注释。

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

09-03 20:11