如何获得Liferay'的Javascript PortletURL模块,以使用友好的URL映射
How do I get Liferay's Javascript PortletURL module to work with friendly URL mappings?
我已经为我的Liferayportlet设置了友好的URL路由,当我使用标准JSP标记生成URL时,它运行良好,比如:
<portlet:renderURL var="resetUrl">
<portlet:param name="start" value="5" />
</portlet:renderURL>
根据我的映射,它生成了一个可爱的URL,比如:
localhost:8080/web/guest/welcome/-/myportlet/5
但是,当我使用JavaScriptPortletURL模块生成URL时,我会得到完全不友好的URL。例如:
var filterUrl = Liferay.PortletURL.createRenderURL();
filterUrl.setPortletId("<%= portletDisplay.getId() %>");
filterUrl.setParameter("start", "5");
location.href = filterUrl;
将生成
localhost:8080/web/guest/welcome?p_p_id=myportlet_WAR_MyPortletportlet&p_p_lifecycle=0&myportlet_WAR_MyPortletportlet_start=5
所以我的问题是:如何从JavaScript生成友好的URL
没有简单的方法可以做到这一点。您必须重写portal_url.js和PortletURLAction.java。另一种选择是编写自己的portlet,它可以根据需要生成URL并通过AJAX访问它。
你可以尝试这种方法,有点棘手-
<portlet:actionURL var="copyNavigationPointURL">
<portlet:param name="myaction" value="copy-navigation-point"></portlet:param>
<portlet:param name="objectTypeId" value="changeObjType"></portlet:param>
<portlet:param name="navigationPointId" value="changeNavPointId"></portlet:param>
</portlet:actionURL>
然后编写javascript并替换这样的param值-
function copyNavigationPoint(copyNavigationPointURL) {
var copyNavId = document.getElementById("navigationPointId").value;
if (copyNavId==null || copyNavId=='null'){
alert('error');
return;
}
var objectTypeId = document.getElementById("objectTypeId").value;
copyNavigationPointURL = copyNavigationPointURL.replace(/changeObjType/i,objectTypeId);
copyNavigationPointURL = copyNavigationPointURL.replace(/changeNavPointId/i,copyNavigationPointId);
submitForm(document.hrefFm, copyNavigationPointURL);
}
你有你的友好网址。
相关文章:
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- backbone.js-映射标准url参数-使用多个参数
- 映射下拉列表选择到URL
- 如何将url id映射到服务器上的内容
- 如何将所有url映射到一个.html页面
- 如何使用URL参数将地址传递到javascript API映射中
- 将自定义URL映射分配给JavaScript变量
- IndexedDB:将 url 映射到接受的 markdown/HTML 文本格式标记的正确架构
- 代码点火器中的 URL 映射
- 如何获得Liferay'的Javascript PortletURL模块,以使用友好的URL映射
- 如何模拟遗留url片段=>元素's的名称映射
- 带有源映射和url语句的Webpack sass加载程序
- 在Meteor中,如何附加应用程序's的根url动态映射到图像路径
- 将 href 值与页面 URL 映射
- ASP.当ASP页面有URL映射时,不加载.NET Javascript
- 路由器上的URL参数映射
- 如何将自定义URL映射到SPA中的REST资源
- 如何将RESTful API映射到BackboneJS模型和集合中的URL
- 当servlet url映射为/ as后缀时的差异
- 用spring映射url填充下拉框