2016-06-30 3 views
0

Hier ist die JSP aus, wo meine Javascript-Funktion aufgerufen wird: JSP-CodeKann nicht Liferay (Frühjahr Portlet MVC) -Controller von JS erhalten, indem Sie folgendermaßen vorgehen:

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

Hier ist die Funktion Javascript Von dort muss ich eine andere JSP rendern und muss daher auf die Render-Methode im Controller zugreifen. Beachten Sie die ‚Simulieren‘ Methode, die ich rufe das Klicken des Hyperlinks zu simulieren (nicht sicher, ob dies richtig ist oder nicht!): Javascript-Code showTutorial() -Methode:

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

Hier ist die Controller-Methode, die ich geschrieben habe, um die Render-Anfrage aus dem Javascript abzufangen. Controller-Methode (nicht auf dieses Verfahren bekommen)

@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);*/ 

    } 

Antwort

0

Sie fügen Sie diesen Code in den Kopf von jsp:

<%@ 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 /> 

Auch in Sie Code:

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

ersetzen, ähnlich zu diesem:

var plid = Liferay.ThemeDisplay.getPlid(); 
var url = Liferay.PortletURL.createRenderURL(); 
url.setPortletId('<%=themeDisplay.getPortletDisplay().getId() %>'); 
url.setParameter('render', 'redirectToEmpInfo'); 
alert(url); 
Verwandte Themen