从 URL 获取参数值无效
Getting Parameter value from URL is not working
我有一个在 Liferay 平台上开发的 portlet,我在其中添加了从 URL 获取查询参数值的逻辑。我有网站:http://localhost:8080/web/guest/example, Now this site is being called from the another external site that is not in Liferay with query parameter at end: http://localhost:8080/web/guest/example?value=test。在 Liferay Portlet 代码中,我应用了从 URL 获取参数值的逻辑,但它不起作用。它 returns "null" 值:
HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(request));
String myValue = httpReq.getParameter("value");
System.out.println(myValue);
我也尝试过这种方式,但从查询参数中得到了相同的 "null" 值:
HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request);
String myValue = httpRequest.getParameter("value");
System.out.println(myValue);
任何建议我在这里做错了什么或者我怎样才能从外部站点获取查询参数值?
如果你碰巧设置了
<render-weight>0</render-weight>
<ajaxable>true</ajaxable>
在 liferay-portlet.xml
中,portlet 将通过 Ajax 呈现,不再在同一个 HTTP-Request 中呈现。我试过了:如果没有这些设置,你的代码(第一个替代方案)运行 很好(在 doView
方法中)。
但是,依赖于访问 运行dom 请求参数(在门户中)无论如何都是不好的做法...您应该构建一个完整的门户 URL 或使用 friendly-URL Liferay 的功能。这样你就真的进入了门户世界,而不是 运行dom servlet/portlet mix。
我刚刚在 doView()
中尝试了以下内容,它对我有用:
HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(renderRequest);
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq);
String myValue = httpOrigReq.getParameter("value");
唯一的区别(可能)是我使用了 RenderRequest 对象。 (因为我没有看到你的 request
-object 的类型。)
我有一个在 Liferay 平台上开发的 portlet,我在其中添加了从 URL 获取查询参数值的逻辑。我有网站:http://localhost:8080/web/guest/example, Now this site is being called from the another external site that is not in Liferay with query parameter at end: http://localhost:8080/web/guest/example?value=test。在 Liferay Portlet 代码中,我应用了从 URL 获取参数值的逻辑,但它不起作用。它 returns "null" 值:
HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(request));
String myValue = httpReq.getParameter("value");
System.out.println(myValue);
我也尝试过这种方式,但从查询参数中得到了相同的 "null" 值:
HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request);
String myValue = httpRequest.getParameter("value");
System.out.println(myValue);
任何建议我在这里做错了什么或者我怎样才能从外部站点获取查询参数值?
如果你碰巧设置了
<render-weight>0</render-weight>
<ajaxable>true</ajaxable>
在 liferay-portlet.xml
中,portlet 将通过 Ajax 呈现,不再在同一个 HTTP-Request 中呈现。我试过了:如果没有这些设置,你的代码(第一个替代方案)运行 很好(在 doView
方法中)。
但是,依赖于访问 运行dom 请求参数(在门户中)无论如何都是不好的做法...您应该构建一个完整的门户 URL 或使用 friendly-URL Liferay 的功能。这样你就真的进入了门户世界,而不是 运行dom servlet/portlet mix。
我刚刚在 doView()
中尝试了以下内容,它对我有用:
HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(renderRequest);
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq);
String myValue = httpOrigReq.getParameter("value");
唯一的区别(可能)是我使用了 RenderRequest 对象。 (因为我没有看到你的 request
-object 的类型。)