STDeploy0109Tree构件实现树型展示.doc_第1页
STDeploy0109Tree构件实现树型展示.doc_第2页
STDeploy0109Tree构件实现树型展示.doc_第3页
STDeploy0109Tree构件实现树型展示.doc_第4页
STDeploy0109Tree构件实现树型展示.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SoTower初学者手册 -Tree构件实现树型展示版本号 V1.5北京中电普华信息技术有限公司2008-03-27 SoTower初学者手册 修订历史版本号修改人修改日期摘 要V1.5张继杰2008-01-31创建文档版权所有2005-2008 北京中电普华信息技术有限公司目 录1实验介绍22实验前提条件23实验目的24实验步骤24.1反向生成Tree代码24.2编写简单的Tree构件实现类114.3编写Tree访问的配置文件134.4实验结果验证155总结161版权所有2005-2008 北京中电普华信息技术有限公司Tree构件实现树型展示1 实验介绍本实验详细介绍了怎样使用Tree构件实现树型展示。主要内容是如何将数据以树的形式展现到页面。2 实验前提条件1、 具备SoTower Studio开发环境2、 具备基本的SoTower应用3、 运行要求(1) IE需要的jre为jre1.5(2) 已经创建好SoTower,并创建好了所需的数据模型(3) 已完成ST_Deploy_01_04 反向代码生成.doc3 实验目的熟练掌握使用Tree构件实现树型展示。4 实验步骤此实验大体需要三个步骤:1、 根据数据库表反向生成Tree代码(包括po类和jsp)。2、 编写Tree展现用的构件实现类。3、 编写访问Tree的配置文件将jsp和构件实现类联系起来实现数据展现。4.1 反向生成Tree代码在生成代码之前我们需要先在数据库中建立tree的一个数据库表TESTTREE:表4.1-1字段名类型主键是否允许为空说明IDVARCHAR2(32)YN节点唯一标识NAMEVARCHAR2(20)NN展现数据时页面显示PARENTIDVARCHAR2(32)NY关联父节点Id上面表结构中的字段是树型展现的必须的字段,我们默认约定是VARCHAR2类型的。插入示例数据如下:表4.1-1IDNAMEPARENTID1A-12B13C14D2数据库中我们约定根节点的PARENTID必须为“-1”或者为空。当为空时只能有一条数据的PARENTID为空。有了数据库表结构我们就可以利用反向代码生成功能生成Po类和jsp文件。具体如何导入到持久模型反向生成代码参见文旦ST_Deploy_01_04 反向代码生成.doc。导入到模型管理处后修改表属性的java包路径为“yxtest”,目标项目属性代码生成路径配置如图:图4.1-1最终生成Po类和jsp如下:Testtree.javapackage org.sotower.yxtest.entity;/导入 java 类import java.io.Serializable;import java.math.BigDecimal;import java.util.*;import mons.lang.builder.EqualsBuilder;import mons.lang.builder.HashCodeBuilder;import mons.lang.builder.ToStringBuilder;/* * 功能:本类TESTTREE数据PO类 * * author sotower * date Tue Mar 11 10:17:35 CST 2008 * */public class Testtree implements Serializable /* * 域 ID */ private String id; /* * 域 NAME */ private String name; /* * 域 PARENTID */ private String parentid; /* *Testtree完整的构造函数 */ public Testtree(String id) this.id=id; /* * Testtree构造函数 */ public Testtree() super(); /* * 属性 id 的get方法 * return String */ public String getId() return id; /* * 属性 id 的set方法 * return void */ public void setId(String id) if(id != null & id.trim().length() = 0) this.id = null; else this.id = id; /* * 属性 name 的get方法 * return String */ public String getName() return name; /* * 属性 name 的set方法 * return void */ public void setName(String name) = name; /* * 属性 parentid 的get方法 * return String */ public String getParentid() return parentid; /* * 属性 parentid 的set方法 * return void */ public void setParentid(String parentid) this.parentid = parentid; /* *toString方法 *return String */ public String toString() return new ToStringBuilder(this) .append(id,getId() .append(name,getName() .append(parentid,getParentid() .append(childid,getChildid() .append(isleaf,getIsleaf() .append(nodeid,getNodeid() .toString(); /* *hibernate通过该方法判断对象是否相等 *return boolean */ public boolean equals(Object o) if (this = o) return true; if (o = null | !(o instanceof Testtree) return false; if(getId() = null ) return false; Testtree other = (Testtree) o; return new EqualsBuilder() .append(this.getId(), other.getId().isEquals(); /* *hashCode方法 *return int */ public int hashCode() if(getId() != null ) return new HashCodeBuilder().append(getId().hashCode(); else return super.hashCode(); Testtree.hbm.xml: testtree_tree_root.jsp:script language=javascript src=link rel=stylesheet type=text/csshref=link rel=stylesheet type=text/csshref=seltree.clickImg=function(node) seltree.xmlsrc=/mytestTree/listNode.so?nodeId=+node.NodeId;testtree_tree_node.jsp:具体文件路径我们根据自己的实际需要来配置生成路径。4.2 编写简单的Tree构件实现类为了便于管理我们将Tree的构件类也放到org/sotower/yxtest/webc目录下。新建类:TestTree。作为Tree构件实现类,必须继承DefaultTree类。实现类代码如下:package org.sotower.yxtest.webc;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.sotower.webc.WebcConstant;import org.sotower.webc.container.tree.DefaultTree;import org.sotower.webc.context.WebContext;import org.sotower.webc.util.WebcUtils;import org.sotower.yxtest.entity.Testtree;/* * 查询复选树的具体方法,分为查询根节点和查询子节点两种 * * author zhengyang * */public class TestTree extends DefaultTree /* * 查询根节点方法 * param context 统一上下文 */public void listRoot(WebContext context) HttpServletRequest request = WebcUtils.getRequest(context);/执行父类方法,获取结果集super.listRoot(context);List resultSet = (List) context.get(WebcConstant.Param_Tree_List);/将具体属性已list中放map的形式放入request中List treeList = new ArrayList();Iterator iter = resultSet.iterator();while (iter.hasNext() Map map = new HashMap();Testtree tree = (Testtree) iter.next();map.put(id, tree.getId();map.put(name, tree.getName();map.put(nodeXmlSrc, );map.put(CheckData, 1);treeList.add(map);/functree必须与页面中collection=functree一致request.setAttribute(functree, treeList);/* * 查询子节点方法 * * param context * 统一上下文 */public void listNode(WebContext context) HttpServletRequest request = WebcUtils.getRequest(context);/执行父类方法,获取结果集super.listNode(context);List resultSet = (List) context.get(WebcConstant.Param_Tree_List);/将具体属性已list中放map的形式放入request中List treeList = new ArrayList();Iterator iter = resultSet.iterator();while (iter.hasNext() Map map = new HashMap();Testtree tree = (Testtree) iter.next();map.put(id, tree.getId();map.put(name, tree.getName();map.put(nodeXmlSrc, );map.put(CheckData, 2);treeList.add(map);/functree必须与页面中collection=functree一致request.setAttribute(functree, treeList);此实现类中有两个方法:listRoot和listNode。这两个方法体基本上是一样的,作用都是查询结果,并将结果放到Map类型的集合后封装到List中,供前台页面展示。4.3 编写Tree访问的配置文件在WEB-INf/appconf/yxtest/文件夹下新增myTreeTest.xml配置文件,代码如下:附Tree构件完整配置图:/ =树构件配置文件说明=/ 构件编号/ =实现类=/ =接口类=/ =属性=/ 实体对象/ 节点编号,对应jsp页面中的nodeId/ 父节点在数据库中的字段名称,与数据库中字段大小写一致/ =其它构件引用=/业务构件/ =展现跳转页面=/除非在webc:forwardSpec中声明,否则转向defaultTarget声明页面4.4 实验结果验证到此我们的关于Tree构件实现树型展示的所有环节都完成了,访问一下我们的jsp看一下效果,地址栏输入:url格式:“主机IP:端口/应用名字/配置文件中Bean Id的值/方法名.so”,如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论