2016-06-30 1 views
0

ここに私のJavascriptの関数が呼び出されているところからJSPです:ここではJavascriptの機能があります JSPコードは、次の手順を実行して、JSからLiferayの(春ポートレットMVCの)コントローラに取得できません:

<div class="modal-footer"> 
         <button type="button" class="btn btn-primary" id="continueTour" onclick="showTutorial()">Take a Quick Tour</button> 
         <a href="javascript:disableTutorial();" id="skipTour" class="textanchor" style="padding-left:30px;">Skip Tour</a> 
        </div> 

そこから私は別のJSPをレンダリングする必要があり、コントローラのRenderメソッドに到達する必要があります。私は、ハイパーリンクのクリックをシミュレートするために呼んでいる「シミュレート」メソッドに注目してください(!これが正しいかどうわからないの!): JavascriptのコードshowTutorial()メソッド:

function showTutorial(){ 
    launchTutorial(); 
} 

function launchTutorial(){ 
    var enjoyhint_instance = new EnjoyHint({ 
     onEnd: function(){ 

      AUI().use('liferay-portlet-url', function(A) { 
       var plid = Liferay.ThemeDisplay.getPlid(); 
       var url=Liferay.PortletURL.createRenderURL(); 
       /*url.setPortletId(plid);*/ 
       url.setPortletName(Liferay.ThemeDisplay.getp) 
       url.setParameter('render','redirectToEmpInfo'); 
       alert(url); 
       A.one(document.createElement('a')).attr('href',url).simulate('click'); 
      }); 
} 
    }); 

var enjoyhint_script_steps = [ 
     { 
      "next #newAuthorizationActive": 'To create an authorization form' 
     } 
]; 
    enjoyhint_instance.set(enjoyhint_script_steps); 
    enjoyhint_instance.run(); 
} 

はここです私はJavascriptからレンダリング要求をキャッチするために書いたコントローラメソッドです。あなたのコードでも

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> 
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme"%> 
<liferay-theme:defineObjects/> 
<portlet:defineObjects /> 

var plid = Liferay.ThemeDisplay.getPlid(); 
var url=Liferay.PortletURL.createRenderURL(); 
/*url.setPortletId(plid);*/ 
url.setPortletName(Liferay.ThemeDisplay.getp) 
url.setParameter('render','redirectToEmpInfo'); 
alert(url); 

を置き換え、同様の コントローラメソッドは

@RenderMapping(params = "render=redirectToEmpInfo") 
    protected ModelAndView redirectToEmpInfoForAuthTour(ModelMap map, RenderRequest renderRequest, RenderResponse response) { 
     LiferayPortal.logInfo(_log, "Inside the render method for Emp Info"); 

     return null; 
     /*return new ModelAndView("emailsuccess", map);*/ 

    } 

答えて

0

あなたは、JSPの頭の中でこのコードを追加します(このメソッドになっていません)これまで:

var plid = Liferay.ThemeDisplay.getPlid(); 
var url = Liferay.PortletURL.createRenderURL(); 
url.setPortletId('<%=themeDisplay.getPortletDisplay().getId() %>'); 
url.setParameter('render', 'redirectToEmpInfo'); 
alert(url); 
関連する問題