中顯示結果。下麵是在這個互動場景中所使用到的JavaScript函式:function updateTotal() {
$("resultTable").style.display = 'none';
var bedrooms = document.getElementById("bedrooms").value;
var bathrooms = document.getElementById("bathrooms").value;
var price = document.getElementById("price").value;
ApartmentDAO.countApartments(loadTotal, bedrooms, bathrooms, price);
}
function loadTotal(data) {
document.getElementById("totalRecords").innerHTML = data;
}很明顯,使用者想看到符合他的搜尋條件的公寓清單。那麼,當使用者對他的搜尋標準感到滿意,並且總數也是有效的話,他會按下顯示結果的按紐,這將會調用updateResults() JavaScript方法:
function updateResults() {
DWRUtil.removeAllRows("apartmentsbody");
var bedrooms = document.getElementById("bedrooms").value;
var bathrooms = document.getElementById("bathrooms").value;
var price = document.getElementById("price").value;
ApartmentDAO.findApartments(fillTable, bedrooms, bathrooms, price);
$("resultTable").style.display = '';
}
function fillTable(apartment) {
DWRUtil.addRows("apartmentsbody", apartment, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);
}
updateResults()方法清空了存放搜尋返回結果的表域,從使用者介麵上獲取所需參數,並且將這些參數傳給DWR建立的ApartmentDAO物件。然後資料庫查詢將被執行,fillTable()將會被調用,它解析了DWR返回的物件(apartment),然後將其顯示到页面中(apartmentsbody)。
安全因素為了保持範例的簡要,ApartmentDAO類盡可能的保持簡單,但這樣的一個類通常有一組設定方法來操作資料,如insert(), update()和delete()。DWR暴露了所有公共方法給所有的HTML页面調用。出於安全的原因,像這樣暴露妳的資料訪問層是不明智的。開發者可以建立一個門麵來集中所有JavaScript函式與底層業務元件之間的通信,這樣就限制了過多暴露的功能。
結論這篇文章僅僅讓妳在妳的項目中使用由DWR支援的javascript:void(0);">AJAX開了個頭。DWR讓妳集中注意力在如何提高妳的應用的互動模型上麵,消除了編寫和偵錯JavaScript程式碼的負擔。使用javascript:void(0);">AJAX最有趣的挑戰是定義在哪裡和如何提高可用性。DWR負責了操作Web畫麵與妳的Java物件之間的通信,這樣就說明妳完全集中注意力在如何讓妳的應用的使用者介麵更加友好,
我想感謝Mircea Oancea和Marcos Pereira,他們閱讀了這篇文章並給予了非常有價值的返匮。
資源javaworld.com:javaworld.com
Matrix-Java開發者社區:http://www.matrix.org.cn/
onjava.com:onjava.com
下載示常式式的全部源碼:http://www.javaworld.com/javaworld/jw-06-2005/dwr/jw-0620-dwr.war
DWR: http://www.getahead.ltd.uk/dwr/index.html
HSQL:http://hsqldb.sourceforge.net/
javascript:void(0);">AJAX的定義:http://en.wikipedia.org/wiki/javascript:void(0);">AJAX
“javascript:void(0);">AJAX:通嚮Web應用的新途徑": Jesse James Garrett (Adaptive Path, 2005.2): http://www.adaptivepath.com/publications/essays/archives/000385.php
“非常動態的Web介麵” Drew McLellan (xml.com, 2005.2): http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
XMLHttpRequest & javascript:void(0);">AJAX 工作範例: http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples
“可用的XMLHttpRequest實踐” Thomas Baekdal (Baekdal.com, 2005.3): http://www.baekdal.com/articles/Usability/usable-XMLHttpRequest/
"XMLHttpRequest使用導引" Thomas Baekdal (Baekdal.com, 2005.2):http://www.baekdal.com/articles/Usability/XMLHttpRequest-guidelines/
<<<返回技術中心