我正在 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 的问题。