2012-03-21 3 views
2

내가 내을 Liferay 포틀릿에 대한 라우팅 친화적 인 URL을 설정 한, 나는 그렇게 같은 표준 JSP 태그와 URL을 생성 할 때 작동이 잘되는 :Liferay의 Javascript PortletURL 모듈을 친숙한 URL 매핑과 함께 사용하려면 어떻게해야합니까?

내 매핑 주어진처럼 사랑스러운 URL을 생성,
<portlet:renderURL var="resetUrl"> 
    <portlet:param name="start" value="5" /> 
</portlet:renderURL> 

: 나는 자바 스크립트 PortletURL 모듈을 사용하여 URL을 생성 할 때

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

는하지만, 전체 비우호적 인 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 

를 생성합니다?

답변

1

쉬운 방법은 없습니다. portal_url.js 및 PortletURLAction.java를 다시 작성해야합니다. 다른 옵션은 자신의 포틀릿을 작성하는 것이며, 마녀는 필요할 때 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> 

다음 자바 스크립트를 작성하고 다음과 같이 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을 시도 할 수

1

것은이 방법, 까다로운 조금이다.

+0

하아! 좋은 해킹. – rhodri

+0

감사합니다. 친애하는 ... :) –

관련 문제