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

Liferay 6.2 PortletURL.setParameter()在参数名称前加下划线,liferay,liferay-6,portlet,jsr286,Liferay,Liferay 6,Portlet,Jsr286,我正在JBoss ES 6.2上使用Liferay 6.2进行一个项目。我需要能够在一个动作方法内创建一个动作URL。操作方法是查找一些数据,构建一个JSONArray,然后设置一个与结果JSON字符串相等的属性。JSON数据的一部分需要一个指向同一portlet中另一个操作的操作url 我遇到的问题是,生成的URL似乎强制我设置的任何参数在参数名中包含两个下划线 例如: PortletURL actionUrl = PortletURLFactoryUtil.create(actionRequ

我正在JBoss ES 6.2上使用Liferay 6.2进行一个项目。我需要能够在一个动作方法内创建一个动作URL。操作方法是查找一些数据,构建一个JSONArray,然后设置一个与结果JSON字符串相等的属性。JSON数据的一部分需要一个指向同一portlet中另一个操作的操作url

我遇到的问题是,生成的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
请注意
\uuuguid
\uujavax.portlet.action
。因此,portlet最终运行的是
doView()
,而不是
myAction()


我还试图创建一个友好的url来解决这个问题,但随后我遇到了如何使用正确的站点上下文和所需的
p\u auth
值生成友好的url的问题。

生成的url没有正确设置portlet ID,因为我看到url中的p\u ID为空。请检查您是否传递了正确的portlet ID