我有一个用 Liferay 开发的 portlet,我想在其中从 URL 获取查询参数值。
我尝试了这种方式,但从查询参数中获取“null”值:
HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(request);
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq);
String myValue = httpOrigReq.getParameter("idProcessOrigin");
如有任何建议,我们将不胜感激!
最佳答案
您在问题中提到的代码应该可以工作,但是,它忽略了 portlet 环境的特殊性。通常,在 portlet 中,您宁愿用 <portlet:namespace/>
“修饰”参数名称。 (或者您选择的 UI 库中与此 JSP 标记等效的任何内容)。而不是提交参数"idProcessOrigin"
,您将提交 "<portlet:namespace/>idProcessOrigin"
(当然,使用正确替换的命名空间,例如 SOME_RANDOM_STUFF_idProcessOrigin
)
如果你不想要这个,你也可以声明属性 com.liferay.portlet.requires-namespaced-parameters=<boolean>
在您的 portlet-@Component 的属性列表中 ( as carried over from liferay-portlet.xml )
对于从 portlet 请求获取参数的标准方法,您不需要通过 HttpServletRequest
完全 - 只需使用 PortletRequest
的getParameter
方法。然而,此方法的结果取决于正确修饰的参数名称(或上面提到的停用选项)。注:当您调用request.getParameter("idProcessOrigin")
时,你就不再需要装饰了,前提是 request
是 PortletRequest,而不是 HttpServletRequest。
关于java - 如何从Liferay中的URL获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46276693/