java - 如何从Liferay中的URL获取参数

标签 java liferay liferay-7

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

关于java - 如何从Liferay中的URL获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46276693/

相关文章:

android - Android Liferay屏幕中的NoClassDefError com.liferay.mobile.screens.base.interactor.JSONObjectCallback

ldap - liferay 7 使​​用 ldap 与 cas 集成

liferay-7 - Liferay- 删除控制面板菜单

liferay - 如何从 Liferay 7.4 中的 ddmfieldattribute 表中获取 SmallAttributeValue 字段?

java - 未抛出 ClosedByInterruptException

java - 在 Android 中播放音频时出现故障

ajax - 如何调用portlet.java类的特定方法而不是重写serveResource方法?

java - 如何在 iFrame portlet 中嵌入应用程序(通过指定 url)

java - oracle java教程中可能有错误?

java - 枚举感知的 ServiceLoader 实现?