2012-03-21 14 views
2

私はLiferayのポートレットのルーティングフレンドリーURLを設定している、と私はそうのような標準的なJSPタグでURLを生成するとき、それは正常に動作しています:私のマッピング与えられ、LiferayのJavascript PortletURLモジュールをフレンドリなURLマッピングで使用するにはどうすればよいですか?

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

は、のような素敵なURLを生成します。

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

しかし、私はJavaScriptをのPortletURLモジュールを使用してURLを生成するとき、私は完全な非友好的なURLを取得します。例えば: はどのように私はJavaScriptから友好的な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 

が生成されますか?

答えて

1

簡単な方法はありません。 portal_url.jsとPortletURLAction.javaを書き直す必要があります。 他のオプションでは、独自のポートレットを作成し、必要なときにURLを生成し、AJAX経由でアクセスできます。その後、ジャバスクリプトを書いて、このようなのparam値置き換える

   <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> 

- -

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を持っているあなたが試すことができ

1

一つのことは少しトリッキー、このアプローチです。

+0

ハァ!ニースハック。 – rhodri

+0

ありがとうございます... :) –

関連する問題