JSF 2 fu: Ajax 组件
2010-06-08 00:00:00 来源:WEB开发网清单 5 中的 JavaScript 包括三个函数,我把它们放置在 com.corejsf 名称空间的内部。我实现了名称空间(从技术上说是一个 JavaScript 字面对象),以防止其他人有意或无意修改我的三个函数。
如果这些函数未包含在 com.corejsf 中,则其他人可以实现自己的 updateCompletionItems 函数,从而将我的实现替换成它们。一些 JavaScript 库可以实现一个 updateCompletionItems 函数,但最理想的情况是任何人都不用设计 com.corejsf.updateCompletionItems。(相反,抛弃 com,并使用 corejsf.updateCompletionItems 可能已经足够,但有时会难以控制。)
因此,这些函数做了些什么? updateCompletionItems() 函数向服务器发起 Ajax 请求 — 通过调用 JSF 的 jsf.ajax.request() 函数 — 要求 JSF 仅在 Ajax 调用返回时呈现列表框组件。 updateCompletionItems() 函数还传递了两个额外的参数到 jsf.ajax.request() 中:列表框左上角的 x 和 y 坐标。jsf.ajax.request() 函数会将这些函数参数转换为通过 Ajax 调用发送的请求参数。
JSF 会在文本输入失焦时调用 inputLostFocus() 函数。该函数的作用是使用 Prototype 的 Element 对象来隐藏列表框。
updateCompletionItems() 和 inputLostFocus() 将它们的功能存储在一个函数中。然后,它们安排自己的函数分别在 350ms 和 200ms 时执行。换句话说,每个函数都有各自的任务,但它会让任务延时 350ms 或 200ms。文本输入会在 keyup 事件后延时,因此,updateCompletionItems() 方法会最多每隔 350ms 发送一个 Ajax 请求。其思想是,如果用户输入速度极快,则不会让 Ajax 调用淹没服务器。
inputLostFocus 函数会在文本输入失焦时调用,并延时其任务 200ms。这种延时是必要的,因为该值会在 Ajax 调用返回时复制到列表框之外,并且列表框必须为可见才能确保它正常运行。
- ››Ajax 实现静态刷新页面 带加载旋转图片
- ››ajax中获取和发送二进制数据的方法
- ››JSF 2简介:JSF向导
- ››ajax调用后台页面怎样区别ID
- ››Ajax+jQuery实现LightBox与服务器通信
- ››AJAX中利用javascript的split函数处理responseTex...
- ››JSF 2 简介: JSF 向导
- ››JSF 2 简介: 后来添加的 Ajax 复合组件
- ››JSF 2 fu: Ajax 组件
- ››AjaXplorer 2.6.1 发布,远程文件管理
- ››AJAX + SVG 实现实时监控图表
- ››AJAX 及使用 E4X 编写 Web 服务脚本,第 2 部分:...
更多精彩
赞助商链接