0

我已经使用用户友好的 url 导航将渲染参数从一个 portlet 传递到另一个 portlet。

response.setRenderParameter("params", renderParams);
response.sendRedirect(response.encodeURL("/wps/myportal/Home/abcPortlet"), "params");

这里HomeabcPortlet是特定页面的用户友好页面名称。

在调试时,我发现OriginalParameterMap它的 URL 中包含 render 参数。

谁能告诉我如何找回它?像往常一样,getter 方法无法检索该值。

4

1 回答 1

2

您不能render parameters从一个 portlet 传递到另一个 portlet。它必须是公共渲染参数 (PRP)。设置 PRP 的方法与渲染参数的方法相同,但两个 portlet 都应该同意,它们都支持该 PRP。为此,您需要在portlet.xml两个 portlet 的文件中注册支持的 PRP。有关更多信息,请参阅此链接。这是规范所坚持的。想象一个场景,我们在一个门户页面上有来自不同供应商的多个 portlet。如果一个 portlet 可以从 URL 中检索参数,即使它不是针对该 portlet 的,这也是一个安全问题。

另一种方法(不推荐)是输入 case the RenderRequesttoHttpServletRequest并从请求中获取参数。规范中没有提到PortletRequest应该是HttpServletRequest. 所以最好不要这样做。Portal 的未来实施可以改变这一点。

第三种方法是使用 URL 生成 API 并构造具有针对 portlet 的参数的 URL。您可以参考下面的链接,其中有一些帮助类。这将简化您的工作。高级 URL 生成助手类

最好的方法是使用 PRP。源 portlet 和目标 portlet 都是松散耦合的。

于 2011-12-19T18:46:20.930 回答