Liferay 从URL获取参数值无效

Liferay 从URL获取参数值无效,liferay,liferay-6,liferay-6.2,Liferay,Liferay 6,Liferay 6.2,我在Liferay平台中开发了一个portlet,其中添加了从URL获取查询参数值的逻辑。我已获取站点:,现在正在从另一个外部站点调用此站点,该外部站点不在Liferay中,查询参数位于末尾:。在Liferay Portlet代码中,我应用了逻辑,从不起作用的URL获取参数值。它返回“null”值: 我也尝试过这种方法,但从查询参数中获得相同的“null”值: HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(re

我在Liferay平台中开发了一个portlet,其中添加了从URL获取查询参数值的逻辑。我已获取站点:,现在正在从另一个外部站点调用此站点,该外部站点不在Liferay中,查询参数位于末尾:。在Liferay Portlet代码中,我应用了逻辑,从不起作用的URL获取参数值。它返回“null”值:

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

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

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

如果您碰巧设置了

    <render-weight>0</render-weight>
    <ajaxable>true</ajaxable>
0
真的
liferayportlet.xml
中,portlet将通过Ajax呈现,不再以相同的HTTP请求呈现。我已经尝试过了:没有这些设置,您的代码(第一种选择)运行良好(在
doView
方法中)


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

我刚刚在
doView()中尝试了以下方法,它对我很有效:

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

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

嗨,Olaf Kock,我在本地检查了我的liferay-portlet.xml,我没有与渲染权重和ajaxable相关的设置,但我仍然得到参数的空值。来自外部站点的查询参数将有多个值,这些值引用Liferay中的同一Portlet,通过查询参数传递的那些值必须插入数据库中。如果我需要创建友好的URL,不同的值,如在URL末尾放置?value=test Liferay不接受结尾处的查询参数作为友好URL。您可能需要发布更多代码,因为您上面发布的代码对我有用。Olaf Kock,我有表单portlet,当用户输入详细信息并提交时,它会将数据输入数据库。在view.jsp中,我有一些字段可以输入名称和详细信息,比如FirstName。。。。然后调用Java类函数将输入的数据插入数据库。为了测试查询参数,我没有在代码中提供任何值,只是使用上面的代码从URL获取查询参数。在本地测试中,我只是将查询参数提供为:并填写表单并提交。我作为查询参数获取的值为null。您是否尝试使用
请求.getQueryString()
获取它?我想您可能在liferay-portlet.xml文件中遗漏了false
HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(renderRequest);
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq);
String myValue = httpOrigReq.getParameter("value");