我有一个在Liferay中开发的portlet,我希望从URL中获取查询参数值。
我试过这种方式,但得到了#34; null" Query参数的值:
HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(request);
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq);
String myValue = httpOrigReq.getParameter("idProcessOrigin");
非常感谢任何建议!
答案 0 :(得分:3)
您在问题中提到的代码应该工作,但是,它忽略了portlet环境的特性。通常,在portlet中,您宁愿用<portlet:namespace/>
“装饰”参数的名称(或者您选择的UI库中的等效项是这个JSP标记)。您不必提交参数"idProcessOrigin"
,而是提交"<portlet:namespace/>idProcessOrigin"
(当然,使用正确替换的命名空间,例如SOME_RANDOM_STUFF_idProcessOrigin
)
如果您不想这样做,您还可以在portlet- @ Component的属性列表(as carried over from liferay-portlet.xml)中声明属性com.liferay.portlet.requires-namespaced-parameters=<boolean>
对于从portlet请求获取参数的标准方法,您根本不需要完成HttpServletRequest
- 只需使用PortletRequest
的{{1}}方法。但是,此方法的结果取决于正确修饰的参数名称(或上面提到的停用选项)。注意:当您致电getParameter
时,如果request.getParameter("idProcessOrigin")
是PortletRequest而不是HttpServletRequest,则不再需要装饰。