在Liferay中使用Ajax
来源:互联网 发布:java resultset 编辑:程序博客网 时间:2024/05/21 08:56
原文:http://www.huqiwen.com/2012/10/21/liferay-6-1-development-study-10-use-ajax/
在现在的Web开发中,Ajax的使用非常频繁,合理的使用Ajax也是提高用户体验的一个重要手段,在Liferay中使用Ajax其实非常方便,但是和普通的web程序稍有差异。
一、简单示例
客户端代码编写
1、在Liferay中创建一个简单的Portlet页面,可以取名为ajaxPortlet,具体的创建过程可以参考;http://www.huqiwen.com/2012/09/03/liferay-6-1-development-study-3-portlet-explicate/
2、在liferay中ajax的请求地址要使用portlet:resourceURL,a这样定义:<portlet:resourceURL var="ajaxUrl"/>,而不是普通请求的portlet:actionURL。
3、编辑view.jsp页面,在页面中添加<portlet:resourceURL var="ajaxUrl"/>,引入Jquery的包(使用jquery做ajax请求),然后编写一个简单的ajax请求代码。
function ajaxTest(){ $.post('<%=ajaxUrl%>',{p_p_resource_id:'test1'},function(data){ $('#message').html(data); }) }
这个代码的意思就是请求一下服务端,然后将得到的结果显示到id为message的html元素中。
4、这样客户端的代码就是编写完成。具体的详细代码参看下面中的附件。
服务端代码编写
1、在portlet的控制类中重写serveResource方法。
2、在此方法中添加相应的处理类,此处的处理方法和普通的servlet一样,可以使用下面的代码。
@Override public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException {response.setContentType("text/html;charset=UTF-8"); PrintWriter out = null; try { out = response.getWriter(); } catch (IOException e) { e.printStackTrace(); } String result = "这是服务端返回的结果信息:"; out.println(result); out.flush(); out.close(); super.serveResource(resourceRequest, resourceResponse); }
可以看到其实和普通的servlet处理基本上是一模一样。
二、多ajax请求
上面的示例虽然简单,但仔细一想就会发现有一个问题,如果在一个页面中有多个ajax请求怎么办?我们要依靠一个resourceID来区分不同的请求,同样也是分客户端和服务端。
客户端
方法1:在resourceURL里面添加一个属性id,如<portlet:resourceURL var="ajaxUrl2" id="test2"/>
方法2:在rsourceURL里面添加一个参数,如:
<portlet:resourceURL var="ajaxUrl1"> <portlet:param name="p_p_resource_id" value="test1"/></portlet:resourceURL>
方法3:在ajax请求时添加相应的参数,如:
function ajaxTest(){ $.post('<%=ajaxUrl1%>',{p_p_resource_id:'test1'},function(data){ $('#message').html(data); }) }
方法4:直接在URL里面拼接
服务端
服务端的处理只有一个,取得此resourceID,方法为String resourceID = resourceRequest.getResourceID();然后根据不同的resourceID判断处理不同的ajax请求。返回和一般的处理一样。
其他
在处理返回结果时,如果不想使用普通的servlet的处理方式,可以使用liferay的ServletResponseUtil.sendFile()方法,此方法主要是用来处理文件的,但用于处理ajax的请求也非常方便。
demo代码下载:点击此处下载
- 在Liferay中使用Ajax
- 在Liferay中使用Log4j
- liferay 使用ajax请求
- 在Liferay二次开发中使用ServiceBuilder
- 在liferay strut2中如何使用session
- liferay过程中使用ajax所遇到的问题
- [Liferay] 在 Liferay 使用 SpringMVC 的 @ResourceMapping
- Custom queries in Liferay (在liferay中使用传统的Query)
- Custom queries in Liferay (在liferay中使用传统的Query) 中文
- liferay 在jsp中直接使用的对象
- 在自己的Portlet中使用Liferay的全文检索
- liferay如何在struts2中調用ajax
- Liferay中ajax应用用户session超时
- liferay中使用jQuery Validation Engine进行ajax验证,不通过也提交表单的解决方案
- Liferay:在Liferay中追加Servlet会报错?
- 在vs2008中使用AJAX
- 在JQ中使用Ajax
- 在vue2中使用ajax
- 从n中选k的组合数
- 筛选法之求素数
- (14) MPI-IO_shared_order: seek/get_position/write/read/iread/iwrite read_ordered/write_ordered
- [转]经典字符串哈希算法
- CM10编译环境和代码下载(Nexus S)
- 在Liferay中使用Ajax
- 已知一个函数f可以等概率的得到1-5间的随机数,问怎么等概率的得到1-7的随机数
- 汇编简单的输入输出
- 通过电话号码查人名(ContentProvider)
- Linux下缓冲区溢出攻击的原理及对策
- 笔试面试题记录(0x01) —— #define
- arcmap_python_LabelClass
- Drools Expert(jbpm5学习资料)
- struts2 理解