多个 Ajax 调用 liferay portlet

Posted

技术标签:

【中文标题】多个 Ajax 调用 liferay portlet【英文标题】:Multiple Ajax calls liferay portlets 【发布时间】:2013-06-17 08:14:29 【问题描述】:

我有 liferay portlet,我需要严重依赖 AJAX 调用。所以我需要多次调用 serveResource 方法。一种方法是我可以通过 URL 传递一个参数,然后根据该参数区分请求。

但在我的情况下,我必须多次调用serveResource,因此该方法将难以维护。 有什么框架可以做到这一点吗?使用它,代码变得可维护。

【问题讨论】:

你可以使用 Spring MVC。 【参考方案1】:

使用 Spring MVC 框架并根据您在控制器中的业务逻辑/用户操作调用不同的方法,

试试下面的代码 在jsp中

<portlet:resourceURL var="loadContents" id="loadContents"></portlet:resourceURL>
<portlet:resourceURL var="loadCategories" id="loadCategories"></portlet:resourceURL>

jsp中的ajax调用

AUI().ready(
        function(A)             
            A.use('aui-io-request', 
                    function(aui) 
                    A.io.request("<%=loadContents%>", 
                        autoLoad : false,
                        cache : false,
                        dataType : 'json',
                        data:,
                        method:'POST',
                        on : 
                            success : function(event, id, xhr) 
                                var response = this.get('responseData');
                                 // add logic here after response
                            
                        
                    ).start();
                );
        );

在控制器/java类中

    @ResourceMapping("loadCategories")
    public void loadCategories(final ResourceRequest resourceRequest, final ResourceResponse resourceResponse)
    
         // your business logic goes here
    

    @ResourceMapping("loadContents")
    public void loadContents(final ResourceRequest resourceRequest, final ResourceResponse resourceResponse)
    
         // your business logic goes here
    

希望上面的代码 sn-ps 能帮助你,你得到你想要的!!!

【讨论】:

感谢您的回答。我们只会这样做.. 虽然已经决定使用 Spring MVC,但也非常感谢您的投入。 :-)【参考方案2】:

在此添加更多。我们不能像processAction那样使用serveResource方法。单个liferay portlet中可以有多个processAction(不是spring mvc portlet),而在serveReource的情况下它将是单身的。

serveResource主要用于ajax调用。我们可以在serveResource方法中通过resource Id区分调用来处理多个ajax请求。

resourceRequest.getResourceID() 将返回我们在 jsp 中使用以下代码定义的 Id。

<portlet:resourceURL var="demoUrl" id="demoUrl"></portlet:resourceURL>

【讨论】:

以上是关于多个 Ajax 调用 liferay portlet的主要内容,如果未能解决你的问题,请参考以下文章

Liferay Embedded portlet 不调用渲染函数

Liferay API 调用需要经过身份验证的访问

Liferay Jax-RS:无法调用简单的 REST api,得到 403 和 405

ExtJs 多个 Ajax 调用

使用 liferay 和 icefaces 共享 Portlet 数据

同一站点的多个选项卡是不是发送多个 ajax 调用?