1

我正在 JBoss ES 6.2 上使用 Liferay 6.2 开发一个项目。我需要能够在操作方法中创建操作 URL。action 方法正在查找一些数据,构建一个 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

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

我也尝试创建一个友好的 url 来解决这个问题,但后来我遇到了如何生成具有正确站点上下文和所需p_auth值的友好 url 的问题。

4

1 回答 1

2

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

于 2015-04-24T08:10:51.407 回答