Liferay中如何获取URL的参数

How to get parameters from the URL in Liferay

我有一个用 Liferay 开发的 portlet,我想在其中从 URL.

获取查询参数值

我试过这种方式,但从查询参数中得到 "null" 值:

HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(request);
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq);
String myValue = httpOrigReq.getParameter("idProcessOrigin");

如有任何建议,我们将不胜感激!

您在问题中提到的代码 应该 可以工作,但是,它忽略了 portlet 环境的特殊性。通常,在 portlet 中,您宁愿 "decorate" 带有 <portlet:namespace/> 的参数名称(或者您选择的 UI 库中与此 JSP 标记等效的任何名称) .不是提交参数 "idProcessOrigin",而是提交 "<portlet:namespace/>idProcessOrigin"(当然,使用正确替换的命名空间,例如 SOME_RANDOM_STUFF_idProcessOrigin

如果您不想这样,您也可以在您的 portlet-@Component 的 属性 列表中声明 属性 com.liferay.portlet.requires-namespaced-parameters=<boolean> (as carried over from liferay-portlet.xml)

对于从 portlet 请求获取参数的标准方法,您根本不需要通过 HttpServletRequest - 只需使用 PortletRequestgetParameter方法。但是,此方法的结果取决于正确修饰的参数名称(或上面提到的停用选项)。注意:当你调用request.getParameter("idProcessOrigin")时,你不再需要装饰,前提是request是一个PortletRequest,而不是一个HttpServletRequest。