我正在使用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
知道出了什么问题吗?
答案 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) %>');