Struts 使用 DOJO 框架實現 AJAX 標簽。首先,在介紹例子之前,你需要將 struts2-dojo-plugin-2.2.3.jar 添加到你的類路徑中。你可以從下載的 struts2 的 lib 文件夾中獲取這個文件(C:\struts-2.2.3-all\struts-2.2.3\lib\struts2-dojo-plugin-2.2.3.jar)。
在這次實踐中,讓我們修改 HelloWorld.jsp 文件,如下所示:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sx" uri="/struts-dojo-tags"%> <html> <head> <title>Hello World</title> <s:head /> <sx:head /> </head> <body> <s:form> <sx:autocompleter label="Favourite Colour" list="{'red','green','blue'}" /> <br /> <sx:datetimepicker name="deliverydate" label="Delivery Date" displayFormat="dd/MM/yyyy" /> <br /> <s:url id="url" value="/hello.action" /> <sx:div href="%{#url}" delay="2000"> Initial Content </sx:div> <br/> <sx:tabbedpanel id="tabContainer"> <sx:div label="Tab 1">Tab 1</sx:div> <sx:div label="Tab 2">Tab 2</sx:div> </sx:tabbedpanel> </s:form> </body> </html>
當我們運行上述例子時,會得到如下所示的輸出:
http://wiki.jikexueyuan.com/project/struts-2/images/sturtsajaxtag.jpg" alt="" />
現在讓我們一步步的看這個例子。
首先需要注意的是用 prefix sx 添加的新的標簽庫。這(struts-dojo-tags) 是專門為 ajax 集成創(chuàng)建的標簽庫。
然后在 HTML 頭信息內部,我們調用 sx:head。它會初始化 dojo 框架并為頁面內的所有的 AJAX 調用做好準備。這一步是很重要的——沒有 sx:head 初始化,你的 ajax 調用不會起作用。
首先我們得到 autocompleter 標簽。autocompleter 標簽看起來與下拉選框非常相似。它有三個常用的值 red,green 和 blue。但是它和下拉選框之間的區(qū)別是它是自動實現的。也就是說,如果你鍵入 gr,那么它就會用 "green" 填充。除此之外,該標簽與我們之前提到的 s:select 標簽就是非常相似的了。
接下來,我們有一個日期時間選擇器。該標簽創(chuàng)建了一個輸入字段和一個緊挨輸入字段的按鈕。當按下按鈕,就會彈出一個日期時間選擇器。當用戶選擇日期后,該日期就會填充到該標簽屬性指定的表單的輸入文本中。在我們的例子中,我們?yōu)槿掌谥付?dd/MM/yyyy 格式。
接下來我們?yōu)?system.action 文件創(chuàng)建一個 url 標簽,該文件在之前的實踐中已經創(chuàng)建過了。不一定非得是 system.action 文件——它可以是你之前創(chuàng)建的任何操作文件。然后我們得到一個 div,帶有對 url 的超連接設置以及延遲設置為 2 秒。當你運行它的時候,"Initial Content" 會延遲 2 秒,然后 div 的內容會被 hello.action 執(zhí)行中的內容取代。
最后我們得到一個帶有兩個標簽的標簽面板。標簽是帶有 Tab 1 和 Tab 2 標記的 div。
值得注意的是,在 Struts 中的 AJAX 標簽集成仍然是一項有待改善的工作,該集成也隨著每次發(fā)布慢慢的成熟起來。