Liferay 6.1开发学习(十):在Liferay中使用Ajax【转】
2015-07-02 00:00
661 查看
摘要:在现在的Web开发中,Ajax的使用非常频繁,合理的使用Ajax也是提高用户体验的一个重要手段,在Liferay中使用Ajax其实非常方便,但是和普通的web程序稍有差异。
http://www.huqiwen.com/2012/09/03/liferay-6-1-development-study-3-portlet-explicate/
2、在liferay中ajax的请求地址要使用portlet:resourceURL,a这样定义:<portlet:resourceURLvar="ajaxUrl"/>,而不是普通请求的portlet:actionURL。
3、编辑view.jsp页面,在页面中添加<portlet:resourceURLvar="ajaxUrl"/>,引入Jquery的包(使用jquery做ajax请求),然后编写一个简单的ajax请求代码。
这个代码的意思就是请求一下服务端,然后将得到的结果显示到id为message的html元素中。
4、这样客户端的代码就是编写完成。具体的详细代码参看下面中的附件。
2、在此方法中添加相应的处理类,此处的处理方法和普通的servlet一样,可以使用下面的代码。
可以看到其实和普通的servlet处理基本上是一模一样。
方法2:在rsourceURL里面添加一个参数,如:
方法3:在ajax请求时添加相应的参数,如:
方法4:直接在URL里面拼接
一、简单示例
客户端代码编写
1、在Liferay中创建一个简单的Portlet页面,可以取名为ajaxPortlet,具体的创建过程可以参考;2、在liferay中ajax的请求地址要使用portlet:resourceURL,a这样定义:<portlet:resourceURLvar="ajaxUrl"/>,而不是普通请求的portlet:actionURL。
3、编辑view.jsp页面,在页面中添加<portlet:resourceURLvar="ajaxUrl"/>,引入Jquery的包(使用jquery做ajax请求),然后编写一个简单的ajax请求代码。
functionajaxTest(){
$.post('<%=ajaxUrl%>',{p_p_resource_id:'test1'},function(data){
$('#message').html(data);
})
}
这个代码的意思就是请求一下服务端,然后将得到的结果显示到id为message的html元素中。
4、这样客户端的代码就是编写完成。具体的详细代码参看下面中的附件。
服务端代码编写
1、在portlet的控制类中重写serveResource方法。2、在此方法中添加相应的处理类,此处的处理方法和普通的servlet一样,可以使用下面的代码。
@Override
publicvoidserveResource(ResourceRequestresourceRequest,ResourceResponseresourceResponse)throwsIOException,PortletException{
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=null;
try{
out=response.getWriter();
}catch(IOExceptione){
e.printStackTrace();
}
Stringresult="这是服务端返回的结果信息:";
out.println(result);
out.flush();
out.close();
super.serveResource(resourceRequest,resourceResponse);
}
可以看到其实和普通的servlet处理基本上是一模一样。
二、多ajax请求
上面的示例虽然简单,但仔细一想就会发现有一个问题,如果在一个页面中有多个ajax请求怎么办?我们要依靠一个resourceID来区分不同的请求,同样也是分客户端和服务端。客户端
方法1:在resourceURL里面添加一个属性id,如<portlet:resourceURLvar="ajaxUrl2"id="test2"/>方法2:在rsourceURL里面添加一个参数,如:
<portlet:resourceURLvar="ajaxUrl1">
<portlet:paramname="p_p_resource_id"value="test1"/>
</portlet:resourceURL>
方法3:在ajax请求时添加相应的参数,如:
functionajaxTest(){
$.post('<%=ajaxUrl1%>',{p_p_resource_id:'test1'},function(data){
$('#message').html(data);
})
}
方法4:直接在URL里面拼接
服务端
服务端的处理只有一个,取得此resourceID,方法为StringresourceID=resourceRequest.getResourceID();然后根据不同的resourceID判断处理不同的ajax请求。返回和一般的处理一样。其他
在处理返回结果时,如果不想使用普通的servlet的处理方式,可以使用liferay的ServletResponseUtil.sendFile()方法,此方法主要是用来处理文件的,但用于处理ajax的请求也非常方便。相关文章推荐
- Liferay CE 6.1安装教程
- Liferay被SourceForge评为7月最佳开源项目
- Liferay 6.1开发学习(一):环境搭建【转】
- Liferay 6.1开发学习(二):创建一个Portlet工程【转】
- Liferay 6.1开发学习(三):Portlet简述【转】
- Liferay 6.1开发学习(四):Service Builder【转】
- Liferay 6.1开发学习(十三):弹出层/弹出对话框的使用
- liferay中portlet与portlet之间通
- Liferay自开发portlet的6.1到6.2升级
- Liferay中Portal.properties常用配置参数
- Liferay Portal 主题开发让项目的样式更加随心所欲 (五)
- Liferay Portal 用户+角色+权限管理使用让我们的项目更加专注于业务开发 (四)
- Liferay6.2环境搭建及详细配置精讲
- Liferay in action 学习笔记(二)
- Liferay in action 学习笔记(一)
- 从eclipse部署liferay工程到tomcat-theme篇
- 微信集成Liferay Application
- 构建门户之利刃Liferay Portal系统架构
- 几种开源Portal的简单介绍分析
- Liferay:使用eclipse和Tomcat7.x设置项目布暑的位置