Liferay 6.2 PortletURL.setParameter()将下划线添加到参数名称

时间:2015-04-23 14:20:18

标签: liferay liferay-6 portlet jsr286

我正在使用JBoss ES 6.2上的Liferay 6.2开发一个项目。我需要能够在action方法中创建一个动作URL。 action方法是查找一些数据,构建一个JSONArray,然后设置一个等于生成的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()

我还尝试创建一个友好的网址来解决问题,但后来我遇到了如何使用正确的网站上下文和所需的p_auth值生成友好网址的问题。

1 个答案:

答案 0 :(得分:2)

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