@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
提供了更方便的方法。