从 XML 中我们可以看到树的根节点对应于 XML 标签 <countries>, 根节点下的中间节点对应于 XML 标签 <team>, 叶子节点则对应了 XML 标签 <country> 。 在各个 XML 标签中有属性节点,GWT-Ext 可以取得这些节点值并且赋值于各个树中的各个节点。具体的实现介绍如下。
首先,新建一个负责异步通信的 XMLTreeLoader 的实例 loader,他的构造函数如下。
public XMLTreeLoader() |
其次,XMLTreeLoader 提供了很多方法来映射 XML 的不同节点。代码清单 11 提供了具体的实例来解释。
清单 11. Tree 的异步数据加载
loader.setDataUrl("data/countries.xml"); loader.setMethod(Connection.GET); loader.setRootTag("countries"); loader.setFolderIdMapping("@id"); loader.setLeafIdMapping("@id"); loader.setFolderTitleMapping("@title"); loader.setFolderTag("team"); loader.setLeafTitleMapping("@title"); loader.setLeafTag("country"); loader.setQtipMapping("@qtip"); loader.setCheckedMapping("@checked"); loader.setIconMapping("@icon"); loader.setAttributeMappings(new String[] { "@rank" }); |
方法 setDataUrl 用于设置 XML 映射文件的相对位置,参数 url 是相对于 com.ibm.developmentworks.demo.public 的路径。在本例中,我们在 public 目录下创建了新的 data 目录,同时在该目录下新建 countries.xml 文件。
public void setDataUrl(java.lang.String dataUrl) |
方法 setMethod 用于设置通信方法。由于 XMLTreeLoader 是建立在 HTTP 上的异步通信,因此这里有 Connection.GET 和 Connection.POST 两种通信方法。
public void setMethod(Connection.Method method) |
方法 setRootTag 用于指定 XML 文件中顶级标签的名字。在本例中,顶级标签是 countries 。对应于树的根节点。
public void setRootTag(java.lang.String rootTag) |
方法 setFolderTag(String tag)用于指定 XML 文件中非顶级和最底级标签的名字。在本例中,该标签是 team 。对于树中的目录节点。目录节点可以包含非根节点外的其它任何节点。
public void setFolderTag(java.lang.String folderTag) |
方法 setLeafTag 用于指定 XML 文件中最底级标签的名字。在本例中,该标签的名字是 country 。对应于树中的叶子节点。叶子节点下不能再包含其它节点。
public void setLeafTag(java.lang.String leafTag) |
方法 setFolderIdMapping 用于设置节点的标识 ID 。对于树的每个节点来说都有一个唯一 ID,这个 ID 在 XML 文件中出现在标签 <team> 的属性节点。如 id="team-a",GWT-Ext 取得属性节点值的方式是在属性名前加上 @ 符号,取得属性值。如果在 xml 的标签中没有该指定属性,GWT-Ext 会生成随机唯一 ID 。
public void setFolderIdMapping(java.lang.String folderIdMapping) |
方法 setLeafIdMapping(String id)用于设置叶子节点的标识 ID 。方式和 setFolderIdMapping 一样。
public void setLeafIdMapping(java.lang.String leafIdMapping) |