ajax本是用在前端的一种异步请求数据的操作,广泛用于js中,一般的js框架如jq都有被封装好的方法,用于发起异步请求操作。异步操作可以增强用户体验和操作,越来越多的程序都在使用ajax。JSF的facelets内置了一个ajax标签,可用于简单的ajax操作。

  f:ajax 有几个常用属性,分别是:event、listener、render。

1、event:event 对应一个js事件名,该事件名省略了开头的”on“字符,例如点击事件是onclick,那么只需要填入click即可。类似事件还有obblur、onkeyup、onmouseover等等。

2、listener:lisetener为指定一个ajax事件,当前事件需要执行bean中的什么方法。实际调用bean中的方法即可。

3、render:render内填入一个需要渲染的组件id。ajax实现异步操作的目的就是无刷新页面显示数据,那么当返回数据时,这些数据需要显示在那个区域,给该区域指定一个  id,和render关联即可,这里可以填入多个id,用空格隔开。

示例性代码如下:

a.xhtml:

 <h:form preparedId="false">
<div id="show">#{bean.var}</div>
<h:commandButton value="点击">
<f:ajax event="click" render="show" listener="#{bean.do}"/>
</h:commandButton>
</h:form>

bean.java:

 private String var;

public void setVar(String var){
this.var = var;
} public String getVar(){
return var;
} public void do(){
var="hello";
}

上面的代码中,当在页面点击按钮时,会触发bean中的do方法,进而改变var的值,通过ajax的render属性指定刷新id为“show”的区域。

jsf ajax还可以与一组组件关联起来,形成ajax组,只需要把一组组件内置于ajax标签内即可,示例性代码如下:

 <f:ajax event="click" listener="#{bean.do}">
<h:form>
<h:commandButton value="click1"/>
<h:commandButton value="click2"/>
<h:commandButton value="click3">
<f:ajax event="blur" lisrener="#{bean.do2}"/>
</h:commandButton>
<h:form>
</f:ajax>

  以上代码在第三个按钮中还用了一个ajax标签。ajax组件可以这样嵌套使用,从最近的地方开始执行。

  jsf的ajax操作广泛用于字段验证方面,通过事件向bean传递数据,一般input类型标签使用validator属性指定验证方法,此验证方法带有3个参数,分别是FacesContext、UIComponent和一个Object类型数据,该object即为输入框内的值。

  ajax还有一个onevent属性,该属性只能填入一个js方法。这个js方法会被调用3次,分别是三个状态:"begin、success、complete",即对于ajax请求的三个状态:请求之前、呈现响应、成功调用。js方法有一个参数,参数的status属性为这几个状态,是示例性代码如下:

  

 function fun(data){
if(data.status == "begin"){ }
if(data.status == "complete"){ }
if(data.status == "success"){ } }

  总结:目前使用到的还不是很多,有些特殊使用方法还没遇到过,比如有引入jsf的js库,可以实现更为复杂的ajax操作,传递ajax参数等等。以后遇到再详细了解。

JSF中使用f:ajax标签无刷新页面改变数据的更多相关文章

  1. Ajax 实现无刷新页面

    注意:如本文所用,在前面的文章库的数目可以在源代码中找到,我将指示在文本,其中链路,为了缩短制品的长度,阅读由此带来的不便.乞求被原谅. 评论文章 Ajax 实现无刷新页面.其原理.代码库.代码. 这 ...

  2. PHP + JavaScript + Ajax 实现无刷新页面加载效果

    数据源工厂 Json生成方式1 Json生成方式2 数据搬运工 数据加工师 转换类型 加工展示 结果展示 初始页面 点击按钮之后 总结 今天这个实验的思路就是实现一个无刷新的页面加载效果.具体的思路是 ...

  3. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  4. ASP.NET—015:ASP.NET中无刷新页面实现

    原文作者:杨友山 原文地址:http://blog.csdn.net/yysyangyangyangshan/article/details/39679823 前面也说过在asp.net中前后前交互的 ...

  5. PHP+Ajax+plupload无刷新上传头像代码

    很简单的一款PHP+Ajax+plupload无刷新上传头像代码,兼容性很好,可以直接拿来用.你可以自定义各种类型的文件.本实例中只能上传"jpg", "png" ...

  6. jQuery+php+ajax实现无刷新上传文件功能

    jQuery+php+ajax实现无刷新上传文件功能,还带有上传进度条动画效果,支持图片.视频等大文件上传. js代码 <script type='text/javascript' src='j ...

  7. 使用ajax实现无刷新改变页面内容

    如何使用ajax实现无刷新改变页面内容(也就是ajax异步请求刷新页面),下面通过一个小demo说明一下,前端页面代码如下所示 1 <%@ Page Language="C#" ...

  8. jsp+ajax实现无刷新

    jsp+ajax实现无刷新,鼠标离开文本框即验证用户名 jsp+ajax实现无刷新,鼠标离开文本框即验证用户名(本功能多用于注册) input.jsp(表单提交页面): %@ page content ...

  9. window.history.pushState与ajax实现无刷新更新页面url

    ajax能无刷新更新数据,但是不能更新url HTML5的新API: window.history.pushState, window.history.replaceState 用户操作history ...

随机推荐

  1. 20145240《Java程序设计》第一周学习总结

    20145240 <Java程序设计>第一周学习总结 教材学习内容总结 第一周学习Java首先从最基本的下载.配置环境.了解基本人机命令行方式等基础知识,以及编写简单的"Hell ...

  2. 2018.7.12训练赛 -K

    水题 判断素数 因为范围是到16位,所以可以用long long存储 然后判断是否为素数就ok了. 但我提交之后显示10个测试样例通过了9个.......原因是下面标红的部分. 埃氏筛法:若a是合数, ...

  3. Python 字典Dict概念和操作

    # 字典概念:无序的, 可变的键值对集合 # 定义 # 方式1 # {key: value, key: value...} # 例如 # {"name": "xin&qu ...

  4. python机器学习——分词

    使用jieba库进行分词 安装jieba就不说了,自行百度! import jieba 将标题分词,并转为list seg_list = list(jieba.cut(result.get(" ...

  5. MapReduce-排序(全部排序、辅助排序)

    排序 排序是MapReduce的核心技术. 1.准备 示例:按照气温字段对天气数据集排序.由于气温字段是有符号的整数,所以不能将该字段视为Text对象并以字典顺序排序.反之,用顺序文件存储数据,其In ...

  6. c# 查找一个字符串在另一个字符串出现的次数

    方法一: string test = "FF FF FF FF 01 00 82 00 00 A2 00 00 FB 07 FF FF FF FF 01 00 82 00 00 A2 00 ...

  7. jsp中的<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

    <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+ ...

  8. review39

    不可以在非同步方法中使用wait().notify()和notifyAll().

  9. C++(十一)— map的插入、查找、删除

    标准库map类型是一种以键-值(key-value)存储的数据类型. map是STL的一个关联容器.它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值 ...

  10. Java源码阅读的真实体会(一种学习思路)【转】

    Java源码阅读的真实体会(一种学习思路)   刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+ ...