JavaScript中的Liferay.PortletURL使用/ c / portal / layout创建一个URL

时间:2015-11-19 03:57:38

标签: javascript liferay-6

我正在使用Liferay 6.2 CE。我想用Javascript创建一个portlet URL。这是我的代码:

<aui:script use="liferay-util-window,liferay-portlet-url">
  var portletURL = Liferay.PortletURL.createRenderURL();
  portletURL.setParameter('action', 'detailCourse');
  portletURL.setParameter('id', 10);
  console.log("render = " + portletURL.toString());
</aui:script>

portletURL.toString()导致:

http://localhost:8080/c/portal/layout?p_l_id=29913&p_p_lifecycle=0&_undefined_action=detailCourse&_undefined_id=19

但它应该是这样的:

http://localhost:8080/group/backdoor/home?p_p_id=classlistbackdoor_WAR_classlistbackdoor100SNAPSHOT&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_classlistbackdoor_WAR_classlistbackdoor100SNAPSHOT_id=10&_classlistbackdoor_WAR_classlistbackdoor100SNAPSHOT_action=detailCourse

知道出了什么问题吗?

1 个答案:

答案 0 :(得分:1)

根据Creating Portlet URLs in JavaScript,Liferay 6.2改变了这一点:

  

修复安全问题后,无法再通过JavaScript生成友好的portlet URL。

但是有一个解决方案,它起作用(至少对于JSP):

var portletURL = Liferay.PortletURL.createURL(
   '<%= PortletURLFactoryUtil.create(request, 
          portletId, 
          themeDisplay.getPlid(), 
          PortletRequest.RENDER_PHASE) %>');