Liferay MVCActionCommand与MVCResourceCommand

Liferay MVCActionCommand与MVCResourceCommand,liferay,osgi,portlet,Liferay,Osgi,Portlet,在编写OSGI portlet时,我看不到MVCActionCommand与MVCResourceCommand之间的区别。这两个接口似乎可以互换。使用ActionResponse,您可以跳转到URL。使用ResourceResponse,我可以设置内容以查看页面上的内容 如果我需要刷新页面上的内容,即刷新特定内容,我应该使用ActionResponse吗?我在网上找到的大多数示例都使用ResourceResponse.getWriter().write(“成功”) 我如何知道何时使用Reso

在编写OSGI portlet时,我看不到
MVCActionCommand
MVCResourceCommand
之间的区别。这两个接口似乎可以互换。使用ActionResponse,您可以跳转到URL。使用ResourceResponse,我可以设置内容以查看页面上的内容

  • 如果我需要刷新页面上的内容,即刷新特定内容,我应该使用ActionResponse吗?我在网上找到的大多数示例都使用ResourceResponse.getWriter().write(“成功”)

  • 我如何知道何时使用
    ResourceResponse
    ,何时不使用
    ActionResponse


  • 非常感谢。

    分离的起源在于JavaPortlet生命周期(JSR286)。命令界面允许挂接到生命周期阶段,并提供自定义代码的执行

    有三个非常不同(用途不同)的portlet url处理程序:

    • MVCActionCommand执行命令、更改数据、执行操作(并且不将任何操作返回前端)

    • MVCRenderCommand向客户机提供演示和视图,查看模型选择的结果,通过jsp/jsf/etc呈现数据

    • MVCResourceCommand提供的内容响应:下载文件,下载json csv excel pdf

    顶部:render始终呈现结果页面的一部分,例如,它返回HTML,但不包含
    部分。资源请求独立存在,可以生成任意结果,例如XML、JSON、TXT、GIF、DOC等。此外,操作之后通常是呈现,而资源请求只有该单一阶段。