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¤tURL=
> ...
这个 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
此致
我有一个页面,我在其中部署了一个 portlet,在我的 portlet 中,我使用浏览器中的 url 访问一些参数,例如:
localhost.com:8080/mypage?text=helloworld
使用
PortalUtil.getOriginalServletRequest(request).getParameter("text")
它工作正常。
当 view.jsp
呈现中存在一些延迟(例如将一些调试器放入 Java 代码中)并且与此同时再次调用呈现 portlet view.jsp
时,问题就会出现,但这时间我无法从请求
从客户端调用 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¤tURL=
> ...
这个 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
此致