Liferay 6.2 PortletURL.setParameter() 在参数名称前加上下划线

Liferay 6.2 PortletURL.setParameter() prepends underscores to parameter names

我正在 JBoss ES 6.2 上使用 Liferay 6.2 开发一个项目。我需要能够在操作方法中创建操作 URL。操作方法查找一些数据,构建一个 JSON 数组,然后设置一个属性等于生成的 JSON 字符串。 JSON 数据的一部分需要一个操作 url 到同一 portlet 中的另一个操作。

我 运行 遇到的问题是生成的 URL 似乎强制我设置的任何参数在参数名称中包含两个下划线。

例如:

PortletURL actionUrl = PortletURLFactoryUtil.create(actionRequest, portletId, plid, PortletRequest.ACTION_PHASE);
actionUrl.setPortletMode(LiferayPortletMode.VIEW);
actionUrl.setWindowState(WindowState.NORMAL);
actionUrl.setParameter("guid", guid);
actionUrl.setParameter("javax.portlet.action", "myAction");

最终生成如下内容:

http://localhost:8000/group/mySite/myPortlet?p_auth=fsdweD2&p_p_id=p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&__guid=1234567890&__javax.portlet.action=myAction

注意 __guid__javax.portlet.action。因此,Portlet 最终 运行 宁 doView() 而不是 myAction()

我也曾尝试创建一个友好的 url 来解决这个问题,但后来我 运行 进入了如何生成具有适当站点上下文的友好 url 的问题以及所需的 p_auth 值。

生成的

URL 没有正确设置 portlet ID,因为我看到 p_p_id 在 URL 中是空的。请检查您传递的 portlet ID 是否正确。