星星的天空

宇宙飞船撞上了一个小星星,其结果......

AjaxAnyWhere的原理

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技术.

上面是我在网上看到的,(witrix平台我不知道)这点在自己使用AjaxAnyWhere也确实是这样的。其实Ajax只是把它标明aa:zone 那一部分提取出来。然后把页面中的相应部分换掉。而且我还发现一个问题,如果在aa:zone 之间的是<tr></tr>部分时,它并不能换掉页面的内容。

我在使用AjaxAnyWhere时也曾想过自己写一个js文件来对一些请求验证之类的进行处理。后来想最好还是加入另一种ajax框架好点。不过目前还没有加入,如果大家有感觉好的可以提示一下。

 

阅读更多
个人分类: java AJAX javascript
上一篇Hibernate配置手册
下一篇解决 struts2 升级后 找不到result的问题
想对作者说点什么? 我来说一句

解决sql anywhere 11 汉字乱码问题

2011年09月26日 1.3MB 下载

AjaxAnywhere框架

2008年06月17日 50KB 下载

Ajaxanywhere文档

2011年08月09日 219B 下载

ajaxAnyWhere所需jar包及实例

2012年11月29日 614KB 下载

没有更多推荐了,返回首页

关闭
关闭