`
yuanfen860913
  • 浏览: 115706 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

《Ajax开发精要》关于ajaxanywhere 教程五

阅读更多

5.设置页面可刷新区域

AjaxAnywhere使用自定义标签<aa:zone>来划分页面区域,从而动态地指定页面可刷新区域。通过这种方法,只需要在页面适当位置中添加<aa:zone name=""></aa:zone>标签。对于已有的Web应用程序,几乎无须更改原有的代码,只须使用<aa:zone>标签指定更新区域。AjaxAnywhere会将<aa:zone>标签解析为<span id=""></span>的标记,并最终通过更新其innerHTML属性值来达到更新页面的目的。

区域划分好之后,需要告诉AjaxAnywhere哪些区域需要更新,即设置页面可刷新区域。AjaxAnywhere提供两种方式设置页面可刷新区域:客户端重载AjaxAnywhere对象的getZonesToReload()方法,或者服务器端调用AAUtil类的addZonesToRefresh(ServletReq uest request, String commaSeparatedZonesList)方法。

如果使用客户端重载的方式,则需要将<aa:zone name=""></aa:zone>所指定区域的name属性值组织成以逗号“,”分隔的字符串。例程11-35根据区域内的复选框选中情况来确定该区域是否可刷新。

例程11-35 重载AjaxAnywhere对象的getZonesToReload()方法

ref_All = false;

ajaxAnywhere.getZonesToReload = function (url){

if (ref_All)

return "document.all";

var zones="";

var form = this.findForm();

for (var i=0;i<form.elements.length;i++){

var el = form.elements[i];

if (el.type=="checkbox" && el.checked)

zones += el.value+",";

}

return zones;

}

如果使用服务器端设置的方式,则需要从request中或者其他地方获取指定的zone名称,调用AAUtil类的addZonesToRefresh(ServletRequest request, String commaSeparated ZonesList)并逐个将其保存。当然,在此之前应该将要刷新区域的名称以“zones=zoneNa me1,zoneName2的形式附加在请求中。例程11-36展示了这一过程。

例程11-36 调用AAUtil类的方法保存可刷新区域

<%

if (AAUtils.isAjaxRequest(request)) {

String[] commaSeparatedZones = request.getParameterValues ("zones");

for (int i = 0; commaSeparatedZones != null && i < commaSeparated Zones.length; i++) {

String zone = commaSeparatedZones[i];

AAUtils.addZonesToRefresh(request, zone);

}

}

%>

这两个案例也都可以在AjaxAnywhere提供的demo演示包中找到。有兴趣的读者可以自行查阅相关代码。

<!-- page -->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics