在使用浏览器请求此 JSP 页面之后,会注意到 ajax:select 标记已经由清单 8 所示的 JavaScript 片段所取代,此段代码嵌入在客户端的页面内(通过在 Web 浏览器中查看页面的源代码可以检索到):
清单 8. ajax:select 标记生成的 JavaScript
<script type="text/javascript"> new AjaxJspTag.Select( "/ajaxtags-1.3-beta-rc6-1/dropdown.view", { parameters: "make={make}", postFunction: resetProgress, target: "model", preFunction: initProgress, source: "make", emptyOptionName: "Select model", errorFunction: reportError }); </script>
通常,在浏览器计算这个 JavaScript 片段时,它才会执行。JavaScript 对象(AjaxJspTag.Select)被实例化,适当的侦听程序会被附加到合适的元素。
让我们浏览一下实际响应,该响应在 URL 寻找 make 为 Mazda 的汽车时在后台发送给浏览器,如 清单 9 所示(此响应是在 清单 7 中请求 URL 的结果)。
清单 9. Ajax 响应
<ajax-response> <response> <item> <name>Mazda 3</name> <value>Mazda 3</value> <value>false</value> </item> <item> <name>Mazda 6</name> <value>Mazda 6</value> <value>false</value> </item> <item> <name>RX-8</name> <value>RX-8</value> <value>false</value> </item> </response> </ajax-response>
选择框更新:服务器端
此示例的服务器端代码异常简单。如果合适,AjaxTag API 具有某些内置的 HttpServlet 子类可供您所用,此外,还有一些实用类用来生成简单的 XML 响应(参见清单 10):
清单 10. 取自 DropdownServlet 的代码片段,展示了如何创建对某个 Ajax 请求的适当 XML 响应
public String getXmlContent( HttpServletRequest request, HttpServletResponse response) throws Exception { String make = request.getParameter("make"); CarService service = new CarService(); List<Car> list = service.getModelsByMake(make); AjaxXmlBuilder xml = new AjaxXmlBuilder(); for (Car car:list) { xml.addItem(car.getModel(),true,car.getModel(),false); } return xml.toString(); }
我对清单 10 中的代码进行了简单的修改以便简化它。正如您所见,要创建可由 AjaxTags 客户端 JavaScript 处理的合适响应,所需的代码不多(而且还可以进一步减少)。
结束语
正如所见,AjaxTags 让您可以轻松地向新的或现有的 Java Web 应用程序中添加功能强大的 Ajax 特性。有了 JSP 标记对下拉框修改、切换、选项卡面板、重用以及其余的诸多特性的全面支持 — AjaxTags 无疑成为了创建简捷、细致的 Ajax 应用程序的绝佳选择。使用像 AjaxTags 这样的 Ajax 库可以极大地改善 Web 应用程序的可用性和用户体验,而且还能减少所需的服务器负载和带宽。
参考资料
获得产品和技术
关于作者
Daniel Wintschel 的每天都异乎寻常。但很多时候,他都在帮助一些小型或中型的公司增强实力和提高效率。通常他都会沉浸在用 Java 或 Ruby 编写 Web 应用程序的乐趣中,他非常钟爱编写代码。
本文链接:http://www.blueidea.com/tech/program/2007/5116.asp
出处:IBM developerWorks
责任编辑:moby
上一页 用 AjaxTags 简化 Ajax 开发 [4] 下一页
◎进入论坛网络编程版块参加讨论
|