2014-06-10 4 views
1

javascript에서 renderURL을 사용해야하는 경우가 있습니다. 많은 데이터 행이있는 데이터 테이블이 있습니다. 모든 행을 클릭하면 렌더링 URL을 호출하여 다음보기를로드해야합니다.aui 스크립트 또는 자바 스크립트에서 renderURL을 실행하는 방법

일반적으로 버튼의 경우에는 renderURL을 onClick 이벤트에 작성하여 renderURL을 사용했습니다. 즉,

AUI : 버튼 이름 = "TestButton"onclick을 = "<퍼센트 = testRenderURL.toString() %>"

그러나

현재 시나리오에서, 제어 내 데이터 테이블 즉의 위임 기능에있을 것입니다 , 어떤 핸들러 함수를 클릭 : - 당신은 당신의 요구 사항을 달성하기에

Y.delegate('click', function(e) { 
var target = e.currentTarget; 
record = this.get('recordset').getRecord(target.get('id')).getValue(); 
alert(record.name); 
    //HERE I NEED TO CALL RENDER URL AND LOAD NEXT JSP PAGE 
    // after fetching current row values. i.e, send record.name to next jsp file 
}, '#myTable', 'tr', dt); 
+0

동적으로 앵커 태그를 만들고, URL을 첨부하고, 앵커 태그의 클릭 이벤트를 시뮬레이션 할 수 있습니다. –

답변

2
AUI().use('liferay-portlet-url', function(A) { 
     var url=Liferay.PortletURL.createRenderURL(); 
     url.setPortletId('currentPortletId'); 
     url.setParameter('name','value'); 
     A.one(document.createElement('a')).attr('href',url).simulate('click'); 
    }) 

위의 코드가 도움이 될 것입니다. 귀하의 데이터 테이블의 행의 클릭 이벤트 처리기 기능에 넣어.

참고 : 위 코드에서 currentPortletId, name 및 value를 요구 사항에 따라 바꾸면 'liferay-portlet-url'모듈을 별도로로드 할 수 있습니다.

+0

감사합니다. Pankaj, 시도해보고 계속 게시합니다. –

+0

사실, 탭보기에서 다른 JSP 페이지를로드해야합니다. , renderUrl.toString() \t \t \t \t \t parseContent : 그래서, 아약스 호출 ... div.plug (A.Plugin.IO, { \t \t \t \t \t URI의 사용 만든 사실을 \t \t \t \t \t}). render(); –

+0

답장을 보내 주셔서 감사합니다. –

3

도움이 될 수 있습니다. Liferay 6.1.2를 사용하여 구현했습니다. Javascript를 사용하여 클릭 한 버튼에 따라 PortletURL (내 경우에는 RenderURL)을 생성하고 싶습니다.

1) 나는 네 개의 버튼을 가지고 : 내가 내 JSP 파일에서 한 일은 다음이었다

<aui:button value="Button 1" name="button1" 
    onClick='<%=renderResponse.getNamespace() + "getButtonId(1);"%>'/> 

<aui:button value="Button 2" name="button2" 
    onClick='<%=renderResponse.getNamespace() + "getButtonId(2);"%>'/> 

<aui:button value="Button 3" name="button3" 
    onClick='<%=renderResponse.getNamespace() + "getButtonId(3);"%>'/> 

<aui:button value="Button 4" name="button4" 
    onClick='<%=renderResponse.getNamespace() + "getButtonId(4);"%>'/> 

2) 나는 자바 스크립트를 사용하여 PortletURL를 생성하고 이후에 전달하고 싶었던 새로운 JSP 페이지를 설정 :

<aui:script use="liferay-portlet-url"> 
Liferay.provide(
    window, 
    '<portlet:namespace/>getButtonId', 
    function(id) { 
    var renderURL = Liferay.PortletURL.createRenderURL(); 
    renderURL .setPortletMode("view"); 
    renderURL .setWindowState("normal"); 
    renderURL .setPortletId("myPortletId"); 
    renderURL.setParameter("page","new_jsp_page"); 
    renderURL.setParameter("buttonId",id); 

    window.location.href = renderURL.toString(); 
    } 
); 
</aui:script> 

이는 데이터베이스에서 검색된 데이터에 따라 많은 행이 생성되는 상황에 적용될 수 있습니다.