liferay 6.2中设置参数和设置属性有什么区别?

kha*_*din 3 portlet liferay

我非常困惑何时使用什么,以及使用这些参数的优点和缺点是什么。

谁能帮我澄清一下吗?

Mil*_*kov 5

所以你的问题是

actionRequest.setParameter(...)Liferay 6.2和之间有什么区别actionRequest.setAttribute(...)

这个问题仍然是错误的,原因有两个

  1. ActionRequest不是 Liferay 特有的东西。它是任何门户都需要实现的 portlet API 的一部分。
  2. ActionRequest中没有setParameter(...)方法

我想你想问的是

门户 API 上下文中的参数和属性有什么区别?

  • 参数是客户端发送到 portlet 的东西。它们通常作为 URL 的一部分(在 GET HTTP 方法的情况下在 ? 符号之后)或包含在 HTTP 请求中(在 POST HTTP 方法的情况下)。您可以使用getParameter(...)portlet 中的方法来读取客户端发送到 portlet 的参数值。拥有setParameter(...)方法是没有意义的,因为您的 portlet 是这些参数的最终接收者。

  • 属性是您在当前操作请求的上下文中存储和读取数据的方式。如果您的 portlet 调用其他类,它可以为它们准备一些数据并通过方法将其存储在请求范围中setAttribute(...)。这些类稍后可以通过 读取该数据getAttribute(...)并自行存储数据,以便稍后由 portlet 读取。一旦请求被处理,请求范围就消失了。

一开始可能令人困惑的是actionResponse.setRenderParameter(...)方法。请注意,这是响应而不是请求

actionRequest.setAttribute(...)和 和有什么区别actionResponse.setRenderParameter(...)

要回答这个问题,您需要了解 portlet 的工作原理。客户端通过 Portlet 容器与 Portlet 交互。当他们向 portlet 发送操作请求时,P他们通过容器发送它。然后容器

  • 向 portlet发送Action请求P
  • P响应时,将渲染请求发送到该页面上的每个 portlet,包括P.

因此,P每个客户端请求都会从容器重新接收两个请求(一个操作和一个渲染)。在操作请求期间使用actionResponse.setRenderParameter(...),告诉容器在即将到来的渲染请求中传递此参数。这本质上就是将信息从动作传递到渲染阶段的方式。