Posted on 2005-11-23 21:53
canonical 閱讀(849)
評論(0) 編輯 收藏 所屬分類:
軟件開發
http://ajaxanywhere.sourceforge.net/index.html
AjaxAnywhere利用JSP標簽把Web頁面標注出可以動態裝載的區域, 可以直接把任何JSP頁面轉化為AJAX感知組件而不需要進行復雜的Javascript編碼.
<script> ajaxAnywhere.getZonesToLoad = function(url){ return "countriesList"; } </script>
<select size="10" name="language" onchange="ajaxAnywhere.submitAJAX();">
<%@ include file="/locales_options_lang.jsp"%>
</select>
<aa:zone name="countriesList">
<select size="10" name="country" >
<%@ include file="/locales_options_countries.jsp"%>
</select>
</aa:zone>
AjaxAnywhere的這種做法與witrix平臺中的ajax方案有些類似, 例如
<select onchange="new
js.Ajax().setObjectEvent('changeLanguage').setParam(this).setTplPart('countriesList').replaceChildren('countriesList')">
...</select>
<div id="countriesList">
<tpl:define id="countriesList">
....
</tpl:define>
</div>
但是在AjaxAnywhere的方案中, 后臺jsp頁面總是要完整運行的, 它通過servlet filter機制緩存所有的jsp輸出,
而aa:zone標簽則把自己的bodyContent運行后的結果保存在request的attribute中, 最后servlet
filter根據調用參數決定返回那些zone的運行結果. 而在witrix平臺中的方案中, 只有指定的tplPart才會被運行,
其他部分完全被忽略. 這種差異的根源在于Jsp Tag技術本身的局限性. Jsp Tag的設計是非常原始的,
基本上就是在字符串層面上進行操作, 在運行的時候缺乏對頁面結構強有力的控制. 實際上, 在我看來, 所有基于jsp tag的技術都受制于jsp
tag的先天的局限性, 很難有深度的發展, 包括JSF技術.