1

我有一个在 Liferay 平台上开发的 portlet,我在其中添加了从 URL 获取查询参数值的逻辑。我有这个站点:http://localhost:8080/web/guest/example,现在这个站点是从另一个不在 Liferay 中的外部站点调用的,最后带有查询参数:http://localhost:8080/ web/guest/example?value=test。在 Liferay Portlet 代码中,我已应用逻辑从无效的 URL 获取参数值。它返回“空”值:

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

我也尝试过这种方式,但从 Query 参数中获得了相同的“null”值:

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

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

4

2 回答 2

1

如果你碰巧设置

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

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

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

于 2016-01-21T16:19:40.350 回答
1

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

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

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

于 2016-02-01T10:30:28.923 回答