您的位置:首页 > 其它

利用多个portlet:resourceURL标签发送AJAX请求

2017-10-11 00:00 316 查看
Portlet页面

package com.demo.ajax;

import java.io.IOException;
import java.io.PrintWriter;

import javax.portlet.PortletException;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;

import com.liferay.util.bridges.mvc.MVCPortlet;

/**
* Portlet implementation class AJAXPortlet
*/
public class AJAXPortlet extends MVCPortlet {

//ajax请求时候只能使用portlet:resourceURL 进入serveResource方法中
@Override
public void serveResource(ResourceRequest resourceRequest,
ResourceResponse resourceResponse) throws IOException,
PortletException {
String resourceId = resourceRequest.getResourceID();
PrintWriter writer = resourceResponse.getWriter();
if("wq1".equals(resourceId)){
writer.print("这是jquery请求的内容");
}
if("wq2".equals(resourceId)){
writer.print("这是aui请求的内容");
}
writer.flush();
}

}------------------------------------------------------------------------------------------------------
JSP页面:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<%
String basePath = renderRequest.getContextPath();
%>

<!-- ajax请求时候只能使用portlet:resourceURL 进入serveResource方法中-->
<!-- p_p_resource_id即为该id,可以在serveResource方法中取出 -->
<portlet:resourceURL var="ajaxUrl" id="wq1"></portlet:resourceURL>
<portlet:resourceURL var="ayiUrl" id="wq2"></portlet:resourceURL>

<!-- 引入jQuery -->
<script type="text/javascript" src="<%=basePath%>/js/jquery.js"></script>

<script type="text/javascript">
//利用jquery发送ajax请求
$(function(){
$("#ajaxtest1").click(function(){
//发送请求
$.ajax({
type: "post",
url: "<%=ajaxUrl%>",
success:function(data){
//写入数据
$("#message").val(data);
}
});
});
});

//利用AUI发送ajax请求
AUI().use('aui-base','aui-io-request', function(A){
A.one("#ajaxtest2").on('click',function(){
A.io.request("<%=ayiUrl%>",{
//dataType: 'json',
method: "post",
//data: { paranName: '参数值' },
on:{
success: function() {
var data = this.get('responseData');
A.one("#message").val(data);
}
}
});
})
});
</script>
<html>
<p>
<input type="button" id="ajaxtest1" value="jquery发起请求" />
<input type="button" id="ajaxtest2" value="aui发起请求" />
</p>

<p>接收AJAX请求:<input type="text" id="message"/><p>
</html>
------------------------------------------------------------------------------------------------------

测试结果:



多个请求会进入Portlet中的唯一一个serveResource()方法中,该方法可以获取发送请求的p_p_resource_id,也就是标签portlet:resourceURL中的id属性,该案例就是通过多个该标签进行ajax请求,但是也可以值使用一个该标签,但是需要在不同的地方将p_p_resource_id传递给后端,后面文章会提到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: