Liferay得到URL params问题

时间:2016-02-01 13:42:17

标签: java jsp url liferay url-parameters

我有一个页面,我在其中部署了一个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&currentURL=
> ...

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

2 个答案:

答案 0 :(得分:1)

Liferay可以推送portlet异步渲染,如果加载时间过长(例如连接到调试器时)。这是由于render-weight and ajaxable的默认值,允许这样做。在liferay-portlet.xml

中更改它们

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

答案 1 :(得分:0)

只要portlet可以与其他portlet共享同一页面,portlet就会使用前缀或名称空间。

如果此portlet不可实现,则此命名空间对于给定的portlet可以始终相同。或者这个命名空间可以变量,目的是为每个portlet实例赋予唯一性。

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

然后,使用像..

这样的工具工具很容易访问这个参数
ParamUtil.get(renderRequest, "paramName", "defValue");

这里是java doc

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

此致