Liferay - 如何使用@ResourceMapping注释方法呈现JSP。通过AJAX从JS文件调用此方法

时间:2016-06-29 18:48:52

标签: javascript ajax liferay portlet spring-portlet-mvc

第一个JSP:调用Javascript函数:

<div class="modal-footer">
                        <button type="button" class="btn btn-primary" id="continueTour" onclick="launchTutorial()">Take a Quick Tour</button>
</div>

Javascript函数:

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

//Here's where i'm accessing the 'exportFile' controller method (shown further below)
    $.ajax({
         type : "POST",
         url : $('#authorizationResourceURL').val(),
         data : {action: "redirectToEmpInfoForAuthTour", tourStatus : 0},
         success : function(data){
             alert('success');
             document.open();
             document.write(data);
             document.close();
         }
     });

控制器中的方法:

@ResourceMapping
        protected void exportFile(ResourceRequest request, ResourceResponse response) throws IOException {  
            String action = ParamUtil.getString(request, "action", "");
    if(action.equals("redirectToEmpInfoForAuthTour"))
            {
                //This is where I want to return the 2nd JSP from
            }

我在这里寻找的具体内容:

我有一个JSP(第一个JSP),我试图向用户显示portlet的教程(使用enjoyhints)。作为本教程的一部分,我需要突出显示portlet的不同页面(JSP)上的元素(选择框,文本字段)。因此,在Javascript函数中,我首先突出显示(这个突出显示部分是由enjoyhints处理的)第一个JSP上的元素(这个工作正常),现在我想向用户显示第二个JSP,并使用enjoyhints,突出显示第二个JSP中的一些元素,依此类推第三个和第四个JSP。

如果有人有另外一种方法可以做到这一点,请告诉我。 这里的主要问题是我需要突出显示的元素位于不同的JSP页面上(同一个portlet)。如果所有元素都在同一页面上,那就简单了。

我使用Liferay Portal和Spring Portlet MVC作为我的设计模式。

更新:Here's another thing that I've been trying to achieve the same thing, but no luck

2 个答案:

答案 0 :(得分:0)

您只需更改ResourceMapping方法的签名即可返回字符串。

返回值可以是视图的名称(即JSP)。

答案 1 :(得分:0)

您可以使用返回类型定义资源方法,如下所示 ModelAndView 并在弹出窗口中显示整个jsp内容或附加到现有的html。

@ResourceMapping
protected ModelAndView exportFile(ModelMap model,ResourceRequest request, ResourceResponse response){

}