本文介绍构建Ajax JSF事件驱动,以及介绍通向 Ajax 的不同之路,Seam Remoting 和 Ajax JSF。

时下,大多数 Java 开发人员都很看好 mashup,所以您可能会困惑:Seam 与声称 Web 2.0 的技能,尤其是 Ajax,怎么能集成。若能运用 Seam 发动 JSF 中的部分页面更新或许用 Google Map 帮忙 JSF 运用程序 mashup,那将十分酷,不是么?您不仅能这么做,并且还十分简略。

构建Ajax JSF拜见驱动(在一个ajax驱动的web应用中)  Ajax JSF 第1张

我将为您展现怎么运用 Seam Remoting API 和 Ajax JSF 组件来帮忙根据 JSF 运用程序中的 Ajax 风格的交互。正如您将会看到的,结合 Seam 和 Ajax 的***优点在于它让您能够享受避实就虚 Web 2.0 的奢华东西,而一起又不需求陷于运用 JavaScript XMLHttpRequest 目标的苦楚之中。凭借 Seam Remoting 和 Ajax JSF,能够与服务器上的受管 bean 通讯,就好像这些 bean 与浏览器同在本地相同。浏览器和服务器状况坚持同步,并且永久无需处理促进它们之间通讯的低层 API。

我首要会为您展现 Seam 是怎么推进 Ajax 编程的根据组件的新办法的。您将学会怎么运用 Seam Remoting API 来经过 Ajax 进行 JavaScript 和服务器端目标间的通讯。一旦理解了这种面向 Ajax 的新(且简略的)办法,您就能够运用它来增强 Open 18 运用程序,办法如下:

在 Open 18 球场目录和 Google Maps 之间创立一个 mashup。
运用 Ajax JSF 兼并运用程序的球场目录页和球场细节页。
从头拜访运用程序的 Spring 集成并让 Spring bean 在 Seam Remoting 的生命周期可用。

Open 18 和 Google Maps 之间的 mashup 让用户能够定位地图中的高尔夫球场目录中的方位。将此球场目录和球场细节页兼并起来(并将低层代码 Ajax 化)能够让您显现球场的细节信息而无需加载新页。将 Spring bean 和 Seam Remoting 相集成让您能够捕获 Google Maps 方位符号的重定位并能将相关球场的经度和纬度存储到数据库中。如您所见,成果便是会产生避实就虚高尔夫球员都喜爱运用的 Web 2.0 风格的运用程序,这真是让人形象深化!

假如您从前深受涉及到很多 JavaScript 的过于杂乱的 Ajax 编程之苦,假如到现在为止,您都因为不想面临其杂乱性而一向尽量防止运用 Ajax,那么本文所要教授的内容将会帮助您革除这种忧虑。在重构运用程序时,您需求进行一些 JavaScript 编码,但与大多数 Ajax 完成不同,JavaScript 并不会占有您代码中的大部分; 相反,它只扩展了服务器端的 Java 目标。

通向 Ajax 的不同之路

正如在运用程序中期望防止显式的内存办理相同,您亦不 期望必需求处理低层的 Ajax 恳求协议。这么做只会带来更大的费事(更切当地说,是更多的费事),比方多浏览器支撑、数据封送处理、并发抵触、服务器负载以及定制 servlet 和 servlet 过滤器。其间您想要防止的***的费事是无意间揭露的无状况的恳求-呼应典范,但该典范是根据组件的结构,比方 JSF,所想要躲藏的。

JSF 生命周期经过对底层的 servlet 模型屏蔽运用程序代码促进了面向组件的规划。为了坚持处理 Ajax 的这种笼统性,您能够将低层的这些琐碎作业交由 Seam Remoting 或 Ajax JSF 处理。这两个库均可担任经过 Ajax 交互将 JSF 组件熔合到浏览器时所需的管道处理。当拜见触发时,比方用户单击了一个按钮,音讯就会异步发送给服务器上的组件。一旦收到呼应,它就会用来对此页进行增量更新。用来处理浏览器和服务器端组件间的交互的低层通讯协议都藏于 API 之后。

用户能看到单击按钮后所产生的办法调用的成果。在研讨此用例时,有两个关键需求留意: (1) 该页永久无法改写; (2) 客户端代码与组件上的办法进行通明通讯,而不是显式地构建然后再恳求 URL。规范的 HTTP 恳求在后台运用,但客户端代码永久无需直接与 HTTP 协议交互。

Seam Remoting 和 Ajax JSF

Seam Remoting 和 Ajax JSF 是两个共同的库,可别离服务于 JSF 的 “Ajax 化” 的意图。两个库均运用 Ajax 来引进交互模型,其间浏览器和服务器间的通讯能够在后台异步产生,并对用户不行见。没有必要为了履行服务器上的办法而糟蹋用户页面重载的时刻。在这些库所宣布的 Ajax 恳求中由服务器检索到的信息可用来增量地 “实时” 更新页面的状况。两个库均可装备生命周期,此生命周期能够在浏览器需求的时分康复(restore)组件的状况。这种 Ajax 交互并不是真的恳求而是一种 “康复并履行”。浏览器像是 “敲敲” 服务器的 “膀子”,请它在服务器端的一个受管 bean 上履行一个办法并回来成果。

尽管这两个库作业起来有些不同,但它们并不是彼此排挤的。因为它们都选用的是 JSF 组件模型,所以二者能够很简略地彼此结合,这将在本文后边的部分具体介绍。现在,咱们只需别离考虑二者各自将 Ajax 风格的交互引进 JSF 运用程序的办法:

Seam Remoting 供给了 JavaScript API,能够运用这些 API 来像拜访本地目标相同来拜访 JavaScript 中的服务器端组件,以便经过办法调用发送和检索数据。Seam Remoting 运用定制的、非 JSF 生命周期来使该浏览器能够与服务器端的组件通讯。只要 Seam 容器和其组件能够在这些恳求期间被康复。通明协议是 Ajax,但您无需操心数据包怎么传输的细节。

Ajax JSF 则经过彻底躲藏 JavaScript 的运用让笼统更进了一步。它将避实就虚逻辑都包裹在根本 UI 组件内。Ajax JSF 经过完好的 JSF 生命周期承受 Ajax 恳求。因此,支撑 Ajax 的组件能够在不触发浏览器导航拜见的前提下履行动作处理程序、晋级 JSF 组件树以及从头出现该页的某些部分。同样地,通讯也是经过 Ajax 完成的,但避实就虚这些均在后台产生,页面开发人员不行见。Ajax JSF 面向组件的办法让 Ajax 功用得以成为 JSF 很天然的一部分,而不是方枘圆凿的外来者。

我将深化探求这些办法,但咱们仍是先来看看 Ajax 的基础知识吧。

【修改引荐】

  1. 程序员必备Java API
  2. 关于JSF的一些考虑
  3. 从JSF的切入点操控JSF
  4. 几个JSF盛行名词的解说
  5. 浅谈JSF的UI组件
转载请说明出处
知优网 » 构建Ajax JSF拜见驱动(在一个ajax驱动的web应用中)

发表评论

您需要后才能发表评论