Liferay 获取 URL 参数问题

Liferay getting URL params issue

我有一个页面,我在其中部署了一个 portlet,在我的 portlet 中,我使用浏览器中的 url 访问一些参数,例如:

localhost.com:8080/mypage?text=helloworld

使用

PortalUtil.getOriginalServletRequest(request).getParameter("text")

它工作正常。

view.jsp 呈现中存在一些延迟(例如将一些调试器放入 Java 代码中)并且与此同时再次调用呈现 portlet view.jsp 时,问题就会出现,但这时间我无法从请求

读取"text"参数

从客户端调用 url 如下:

> http://localhost:8080/c/portal/render_portlet?p_l_id=92438&p_p_id=editor_WAR_heliumportlet&p_p_lifecycle=0&p_t_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=0&p_p_col_count=2&p_p_isolated=1&currentURL=
> ...

这个 url 不包含我的参数,我找不到触发这个 url 的线索。任何帮助将不胜感激。

如果 portlet 加载时间过长(例如,当附加到调试器时),Liferay 可以将它们推送为异步呈现。这是由于 render-weight and ajaxable 的默认值允许这样做。在 liferay-portlet.xml.

中更改它们

另请注意,获取未命名空间的通用 HTTP 参数不是规范的一部分,这就是为什么 Liferay 不关心将非命名空间参数从原始 URL 转发到您的 portlet 的原因它通过 AJAX 渲染了它。换句话说:通过使用此技术,您可能会为将来遇到更多麻烦做好准备。

就 portlet 可以与其他 portlet 共享同一页面而言,portlet 通常具有前缀或名称空间。

如果此 portlet 不可实例化,此命名空间对于给定的 portlet 可以始终相同。或者这个命名空间可以是可变的,目的是对于 portlet 的每个实例都是唯一的。

因此,portlet 的参数必须以名称空间为前缀。

然后,使用诸如..

之类的util工具可以轻松访问此参数
ParamUtil.get(renderRequest, "paramName", "defValue");

这里是 java 文档

https://docs.liferay.com/portal/6.2/javadocs-all/com/liferay/portal/kernel/util/ParamUtil.html

此致