通过执行以下操作,无法从JS进入Liferay(Spring Portlet MVC)的控制器: [英] Can't get to Liferay's (Spring Portlet MVC's) controller from JS by doing the following:

查看:93
本文介绍了通过执行以下操作,无法从JS进入Liferay(Spring Portlet MVC)的控制器:的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是从中调用我的Javascript函数的JSP: JSP代码

Here's the JSP from where my Javascript function is being called: JSP code

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

这是Javascript函数,在这里我需要呈现另一个JSP,因此需要进入控制器中的Render方法.注意我正在调用的'simulate'方法来模拟超链接的点击(!不确定这是否正确!): JavaScript代码showTutorial()方法:

Here's the Javascript function from where I need to render another JSP, and hence need to get to the Render method in the controller. Notice the 'simulate' method that I'm calling to simulate the click of the hyperlink (!Not sure if this is right or not!): Javascript Code showTutorial() method:

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的渲染请求. 控制器方法(不使用此方法)

Here's the controller method which I've written to catch the render request from the Javascript. Controller Method (Not getting to this method)

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

    }

推荐答案

您将此代码添加到jsp的头部:

You add this code in head of 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 />

也在您的代码中

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

替换,类似于此:

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

这篇关于通过执行以下操作,无法从JS进入Liferay(Spring Portlet MVC)的控制器:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆