2012-03-21 51 views
2

我已經建立了友好的URL路由我Liferay的門戶,它的工作很好,當我生成標準的JSP標籤,像這樣的網址:如何獲取Liferay的Javascript PortletURL模塊以使用友好的URL映射?

<portlet:renderURL var="resetUrl"> 
    <portlet:param name="start" value="5" /> 
</portlet:renderURL> 

其中,由於我的映射,產生一個可愛的網址,如:

localhost:8080/web/guest/welcome/-/myportlet/5 

但是,當我生成使用JavaScript PortletURL模塊的網址,我得到充分的不友好的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友好的網址?

回答

1

有沒有簡單的方法來做到這一點。你必須重寫portal_url.js和PortletURLAction.java。 另一種選擇是編寫自己的portlet,可以根據需要生成URL並通過AJAX訪問它。

1

有一兩件事你可以嘗試的這種做法,有點棘手 -

   <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); 
} 

,你有你友好的URL。

+0

哈!尼斯黑客。 – rhodri 2012-04-11 11:09:07

+0

謝謝親愛的... :) – 2012-04-11 17:45:05

相關問題