【发布时间】:2013-06-17 08:14:29
【问题描述】:
我有 liferay portlet,我需要严重依赖 AJAX 调用。所以我需要多次调用 serveResource 方法。一种方法是我可以通过 URL 传递一个参数,然后根据该参数区分请求。
但在我的情况下,我必须多次调用serveResource,因此该方法将难以维护。 有什么框架可以做到这一点吗?使用它,代码变得可维护。
【问题讨论】:
-
你可以使用 Spring MVC。
我有 liferay portlet,我需要严重依赖 AJAX 调用。所以我需要多次调用 serveResource 方法。一种方法是我可以通过 URL 传递一个参数,然后根据该参数区分请求。
但在我的情况下,我必须多次调用serveResource,因此该方法将难以维护。 有什么框架可以做到这一点吗?使用它,代码变得可维护。
【问题讨论】:
使用 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 能帮助你,你得到你想要的!!!
【讨论】:
在此添加更多。我们不能像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>
【讨论】: