现在我们进入实战阶段,看看我们怎么可以在服务器端得到当前地图的范围,这个代码中你将学到如何从faces Context里面得到当前form中的控件,以及如何利用ESRI提高的工具,简化我们响应AJAX请求的过程:
UIComponent form = facesContext.getViewRoot().findComponent((String)paramMap.get(FORMID));
首先我们得到页面上的form,form是一个container,通过它我们可以得到form中的其它组件,比如我们的地图控件:
<a:map id="Map0" value="#{mapContext.webMap}" width="600" height="600" />
我们可以用下面的方法得到这个Mapcontrol和WebMap:
MapControl mc = (MapControl) form.findComponent((String)paramMap.get(MAPID));
WebMap wm = mc.getWebMap();
得到了这个WebMap,哈哈,可以得到Everything了,因为你可以从WebMap中得到WebContext。这个时候,想得到那个比例尺,是再简单也不过的事情了,用下面的代码即可:
wm.getMapScale();
得到了比例尺了,接下去怎么办呢?把它返回到客户端,我们的Ajax客户端认的是XML的流,咋办呢?最笨的办法当然是是一个一个String的组装成XML,然后调用Response的Write写回到客户端,比如下面的代码:
public String toXml() {
StringBuffer xml = new StringBuffer();
xml.append("<?xml version=\"1.0\"?>\n");
xml.append(“<scale>”);
xml.append(“<value>100</value>”);
xml.append("</scale>\n");
return xml.toString();
}
生成了XML代码,然后用下面的代码把结果返回给客户端:
Response res=(Response)externalContext.getResponse();
res.setContentType("application/xml");
res.getWriter().write(scaleXml);
当然,各位看官想来都是JAVA高手,对于这样的写法实在感觉不舒服,正待想办法用标准的XML工具来写时,你会发现,ESRI已经为您想到了,写好了几个工具类来供你调用了。我们来看看怎么用这些工具:
用下面的代码创建一个标准的XML文档:
Document doc = XMLUtil.newDocument();
用下面的代码新建一个element:
Element responseElement = XMLUtil.createElement(doc, "response", null, null);
用下面的代码将我们的比例尺数据写到刚才新建的Element里面:
XMLUtil.createElement("scale", String.valueOf(wm.getMapScale()), responseElement);
然后用下面的语句将XML文档写入到客户端:
AJAXUtil.writeResponse(facesContext, doc);
很可惜的是,ESRI这些类的代码是不公开的,不过你可以猜一猜,这些方法里面到底发生了什么事情。
OK,皮球又被提到了客户端了,我们下一个讲座来看看,如何解析服务器端返回的XML文档,并且更新页面上的输入框。
分享到:
相关推荐
13、ArcGIS Server Java讲座----利用Ajax得到当前地图的比例尺(服务器端) 32 14、ArcGIS Server Java讲座--用Ajax得到地图比例尺(客户端代码) 33 15、ArcGIS Server JAVA 讲座 自定义Functionality 35 16、ArcGIS ...
java源码:国产Ajax框架 Buffalo.rar
本卷从最易于理解和使用的那部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit。这部分内容不需要读者有任何的客户端...
java源码:Ajax框架 ZK.rar
dwr, java ajax 应用框架,可以将Java对象直接export到ie客户端,成为javascript对象,非常方便js和服务器端的交互,如果你还没有用,就是一下。太方便了呀。
java源码:Java+ajax写的登录实例.rar
ASP.NET AJAX程序设计第I卷服务器端示例程序.part2 ASP.NET AJAX程序设计第I卷服务器端示例程序.part1 http://download.csdn.net/source/945486 下载地址
力可科技CEO、台湾资深移动开发专家冯彦文将在本课程中带领您一探各种搭配AJAX/JAVA实做Client/server双向沟通机制的方法,并通过实际例子介绍如何应用这些新工具为您的网站增添更多互动。冯彦文老师对无线通讯应用...
如果您正在使用异步JavaScript和XML(Ajax)进行 Java:trade_mark: Web开发,那么您最关心的问题可能就是把数据从服务器传递给客户机。本文介绍了Java对象序列化的五种方式,并提供了选择最适合应用程序的数据格式和...
第 13 部分:面向 Java 开发人员的 Ajax: Ajax 的 Java 对象序列化 第 14部分:面向 Java 开发人员的 Ajax 结合 Direct Web Remoting 使用 Ajax 第 15部分:面向 Java 开发人员的 Ajax: 探索 Google Web Toolkit
DWR for JAVA 具体开发过程详细介绍
Xajax类功能描叙:Xajax将服务器端JavaBean中以on开始的函数生成客户端可供javascript调用的同名函数,从而实现 服务器端响应客户端事件进行处理的功.JavaBean中调用XajaxResponse生成XML文档返回客户端进行处理 ...
Ajax Control Toolkit 34个服务器端控件
利用AJAX为服务器端XML文件添加结点,并在客户端访问这个XML文件。
Java类交互的远程服务器端Ajax开源框架dwrDemo
1、前言------为什么我们选择JSF,而不是其它framework 1 2、ArcGIS Server Java开发 JSF基础 2 3、ArcGIS Server Java ADF开发的JSF知识...12、ArcGIS Server Java讲座--如何在用JSF在服务器端处理Ajax请求 29 .......
这是利用ajax技术做的注册小例子,服务器端验证,连接的是mysql数据库,希望大家多提意见,谢谢了
ajax学习:Java+ajax写的登录实例
用案例学Java Web整合开发:Java+Eclipse+Struts 2+Ajax
ASP.NET AJAX深入浅出系列课程(21):利用Microsoft AJAX Library开发客户端组建(上)