@RequestMapping
,@ActionMapping
和@RenderMapping
之间的差异对我来说并不十分清楚。似乎所有上述内容最终都将请求URL映射到控制器中的实际方法。那么区别是什么呢? @Rendermapping
无法完成的@Requestmapping
可以做什么?
答案 0 :(得分:11)
@RequestMapping
允许您指定模式(EDIT,VIEW等)和许多其他选项(尽管不是窗口状态)。 @RenderMapping
允许您仅指定请求参数和窗口状态(MAXIMIZED,NORMAL等),并且是指示渲染请求映射的便捷方式。您可以在同一个类上使用这两个注释。例如,您可以使用RequestMapping在类级别注释以指示它为VIEW模式提供请求,然后在方法级别使用@RenderMapping
(或@ActionMapping
或@ResourceMapping
为特定请求注释处理程序。
现在谈谈不同类型的请求可能会有所帮助。
渲染请求用于呈现HTML,因此通常会显示JSP或其他类型的视图。
动作请求用于执行诸如修改数据,上传文件等操作。重要的是要注意每个动作请求之后是渲染请求。因此,如果您的页面上有两个portlet,并且您向portlet发出了一个操作请求,那么它将收到一个操作请求,后跟一个呈现请求。 Portlet 2只会收到一个渲染请求。
还有另一种类型的请求,你没有提及哪些也是感兴趣的
资源请求可用于呈现其他内容类型。 AJAX是资源请求的常见用例,因为它们适用于返回JSON或XML。
事件请求也存在,可用于portlet间通信。
我可以推荐Spring portlet docs。虽然它们没有很好地覆盖注释,但它们确实解释了不同的请求类型,您应该能够使用该信息来计算注释。
NB。如果您愿意,可以使用@RequestMapping
定义渲染,操作和资源请求,但@RenderMapping
,@ActionMapping
或@ResourceMapping
提供更方便的方法。