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
- 只需使用 PortletRequest
的 getParameter
方法。但是,此方法的结果取决于正确修饰的参数名称(或上面提到的停用选项)。注意:当你调用request.getParameter("idProcessOrigin")
时,你不再需要装饰,前提是request
是一个PortletRequest,而不是一个HttpServletRequest。
我有一个用 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
- 只需使用 PortletRequest
的 getParameter
方法。但是,此方法的结果取决于正确修饰的参数名称(或上面提到的停用选项)。注意:当你调用request.getParameter("idProcessOrigin")
时,你不再需要装饰,前提是request
是一个PortletRequest,而不是一个HttpServletRequest。