在使用瀏覽器請(qǐng)求此 JSP 頁(yè)面之后,會(huì)注意到 ajax:select 標(biāo)記已經(jīng)由清單 8 所示的 JavaScript 片段所取代,此段代碼嵌入在客戶端的頁(yè)面內(nèi)(通過(guò)在 Web 瀏覽器中查看頁(yè)面的源代碼可以檢索到):
清單 8. ajax:select 標(biāo)記生成的 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>
通常,在瀏覽器計(jì)算這個(gè) JavaScript 片段時(shí),它才會(huì)執(zhí)行。JavaScript 對(duì)象(AjaxJspTag.Select)被實(shí)例化,適當(dāng)?shù)膫陕?tīng)程序會(huì)被附加到合適的元素。
讓我們?yōu)g覽一下實(shí)際響應(yīng),該響應(yīng)在 URL 尋找 make 為 Mazda 的汽車時(shí)在后臺(tái)發(fā)送給瀏覽器,如 清單 9 所示(此響應(yīng)是在 清單 7 中請(qǐng)求 URL 的結(jié)果)。
清單 9. Ajax 響應(yīng)
<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>
選擇框更新:服務(wù)器端
此示例的服務(wù)器端代碼異常簡(jiǎn)單。如果合適,AjaxTag API 具有某些內(nèi)置的 HttpServlet 子類可供您所用,此外,還有一些實(shí)用類用來(lái)生成簡(jiǎn)單的 XML 響應(yīng)(參見(jiàn)清單 10):
清單 10. 取自 DropdownServlet 的代碼片段,展示了如何創(chuàng)建對(duì)某個(gè) Ajax 請(qǐng)求的適當(dāng) XML 響應(yīng)
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(); }
我對(duì)清單 10 中的代碼進(jìn)行了簡(jiǎn)單的修改以便簡(jiǎn)化它。正如您所見(jiàn),要?jiǎng)?chuàng)建可由 AjaxTags 客戶端 JavaScript 處理的合適響應(yīng),所需的代碼不多(而且還可以進(jìn)一步減少)。
結(jié)束語(yǔ)
正如所見(jiàn),AjaxTags 讓您可以輕松地向新的或現(xiàn)有的 Java Web 應(yīng)用程序中添加功能強(qiáng)大的 Ajax 特性。有了 JSP 標(biāo)記對(duì)下拉框修改、切換、選項(xiàng)卡面板、重用以及其余的諸多特性的全面支持 — AjaxTags 無(wú)疑成為了創(chuàng)建簡(jiǎn)捷、細(xì)致的 Ajax 應(yīng)用程序的絕佳選擇。使用像 AjaxTags 這樣的 Ajax 庫(kù)可以極大地改善 Web 應(yīng)用程序的可用性和用戶體驗(yàn),而且還能減少所需的服務(wù)器負(fù)載和帶寬。
參考資料
獲得產(chǎn)品和技術(shù)
關(guān)于作者
Daniel Wintschel 的每天都異乎尋常。但很多時(shí)候,他都在幫助一些小型或中型的公司增強(qiáng)實(shí)力和提高效率。通常他都會(huì)沉浸在用 Java 或 Ruby 編寫 Web 應(yīng)用程序的樂(lè)趣中,他非常鐘愛(ài)編寫代碼。
本文鏈接:http://www.95time.cn/tech/program/2007/5116.asp
出處:IBM developerWorks
責(zé)任編輯:moby
上一頁(yè) 用 AjaxTags 簡(jiǎn)化 Ajax 開(kāi)發(fā) [4] 下一頁(yè)
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|