从URL获取参数值不起作用

时间:2016-01-21 15:56:36

标签: liferay liferay-6 liferay-6.2

我有一个在Liferay平台上开发的portlet,我在其中添加了从URL获取查询参数值的逻辑。我有网站:http://localhost:8080/web/guest/example,现在这个网站是从另一个不在Liferay中的外部网站调用的,其末尾是查询参数:http://localhost:8080/web/guest/example?value=test。在Liferay Portlet代码中,我已应用逻辑从URL中获取不起作用的Parameter值。它返回" null"值:

HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(request)); 
        String myValue = httpReq.getParameter("value");     
        System.out.println(myValue);

我也尝试过这种方式,但是得到了相同的" null" Query参数的值:

HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request);
        String myValue = httpRequest.getParameter("value");
        System.out.println(myValue);

任何建议我在这里做错了什么或如何从外部网站获取查询参数值?

2 个答案:

答案 0 :(得分:1)

如果您碰巧设置了

    <render-weight>0</render-weight>
    <ajaxable>true</ajaxable>

liferay-portlet.xml中,portlet将通过Ajax呈现,不再位于同一HTTP-Request中。我已经尝试过了:如果没有这些设置,您的代码(第一个替代方案)运行良好(使用doView方法)。

然而,依赖访问随机请求参数(在门户网站中)的不良做法无论如何......您应该构建一个完整的门户网站URL或使用Liferay的友好URL功能。这样你就可以真正进入门户世界而不是随机的servlet / portlet混合。

答案 1 :(得分:1)

我在doView()内尝试了以下内容,它对我有用:

HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(renderRequest);
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq);
String myValue = httpOrigReq.getParameter("value");

唯一的区别(可能是)我使用了RenderRequest对象。 (因为我没有看到你request - 对象的类型。)