多个 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 Jax-RS:无法调用简单的 REST api,得到 403 和 405