`

flex和java交互实现实现无限接树形结构

    博客分类:
  • flex
阅读更多

数据库表(Category)的设计为:

id       parentId     type       name       description
13         null       search    最新舆情      描述
1          13         search    区域          描述
4          13         search    机构部门      描述
2          1          search    第一区域      描述
5          1          search    第二区域      描述

id        为主键
parentId  为外键

 

java中利用递归的做法把数据库中的记录拼成xml格式,在拼xml时用的是jdom
public String findSubCategoyies(final Category category, final String type, final boolean recursive) {
  final List subCategoyies = new ArrayList();
  return (String)this.getHibernateTemplate().execute(new HibernateCallback() {
   public Object doInHibernate(Session session)
     throws HibernateException, SQLException {
    Element rootElement = new Element("menus");//xml中的根元素
    rootElement.setAttribute("id", category.getId()+"");//设置属性
    rootElement.setAttribute("label", category.getName());//设置属性
    findDiGuiCategories(session, category, type, recursive, subCategoyies, rootElement);//递归的调用
                                //组合xml
    OutputStream os = null;
    String xmlStr = "";
    try {
     os = new ByteArrayOutputStream();
     Format format = Format.getPrettyFormat();
     format.setEncoding("gb2312");//设置编码
     Document doc = new Document(rootElement);
     XMLOutputter xop = new XMLOutputter(format);
     xop.output(doc, os);
     xmlStr = os.toString();
     System.out.println(xmlStr);
     os.close();
     
    } catch (IOException e) {
     e.printStackTrace();
    }    
    return xmlStr;
   }
  });
  
 } 
 
  //循环调用熟悉java的朋友都知道下面的写法是Hibernate的HQL语句。
 public List findDiGuiCategories(Session session, Category category,
   String type, boolean recursive, List categories, Element rootElement) {
  if (session == null)
   return null;
  Query query = null;
  String hql = "from Category c where 1=1";
  if (category == null) {
   hql += " and c.parent is null";
  } else {
   hql += " and c.parent = " + category.getId().longValue() + "";
  }

  if (type == null) {
   hql += " and c.type is null";
  } else {
   hql += " and c.type = '" + type + "'";
  }

  hql += " order by c.name asc";

  query = session.createQuery(hql);

  List directSubDirs = query.list();
  if (Utilities.isNullOrEmpty(directSubDirs))
   return null;
  if (recursive) {
   Iterator it = directSubDirs.iterator();
   while (it.hasNext()) {
    Category subCategory = (Category) it.next();
    categories.add(subCategory);
    Element childElement = new Element("node");
    childElement.setAttribute("id", subCategory.getId()+"");
    childElement.setAttribute("label", subCategory.getName());
    rootElement.addContent(childElement);
    findDiGuiCategories(session, subCategory, type, true,
      categories, childElement);
   }
  } else {
   categories.addAll(directSubDirs);
  }
  return categories;
 }


Flex中as类的写法:
 //通过URLLoader来和java交互
 public function newConsensus():void {
  var url:String = "http://localhost:8080/FlexWebCrawl/categoryAction!tree.do";
  var request:URLRequest = new URLRequest(url);
  var loader:URLLoader   = new URLLoader();
  request.method = "post";
  loader.load(request);
  loader.addEventListener(Event.COMPLETE, resultNewConsensus);
   
 }
  
 public function resultNewConsensus(event:Event):void {
  menus = XML(event.target.data);
             var results:XMLList = menus.node;//获得接点
            this.objMainApp.myTree.dataProvider = results;  
   
 }

 

分享到:
评论

相关推荐

    flex java 交互的一个小例子

    `TreeGrid`则是结合了树形结构和表格数据,用于展示层次化数据。这些组件通常与数据提供者绑定,如ArrayCollection或XMLList,可以从服务器获取并显示数据。 4. **flexlib**:flexlib是一个开源库,包含了一些Flex...

    flex开发实例

    - **Tree控件**:用于构建树形结构的数据展示,支持多级层次结构。 - **AdvancedDataGrid控件**:扩展了DataGrid的功能,提供了更丰富的数据展示选项。 - **CSS**:Flex支持使用CSS来定制界面样式,使得UI设计更加...

    Flex和jsp整合实践

    "xmltree.jsp"可能是一个返回XML数据的例子,Flex客户端通常使用这个数据来动态渲染树形结构或其他数据视图。在Flex中,我们可以使用XMLListCollection类来绑定XML数据到UI组件,如Tree控件。"CheckTree.as"和...

    超酷Flex动画图表

    Flare提供了各种图表、树形图、网络图以及复杂的动画效果,非常适合创建动态、交互式的数据展示。 1. **图表库文件(flare)**: Flare库包含一系列的数据结构和算法,用于数据的组织和可视化。它的核心功能包括: - ...

    flex tree icon

    在IT行业中,"flex tree icon"通常指的是使用Flex技术构建的一种树形结构控件,它在用户界面上显示带有图标的层次数据。Flex是一种用于创建富互联网应用程序(RIA)的框架,基于ActionScript编程语言和Flash Player...

    flex可扩展,动态改变图标的小树

    3. 数据驱动的树形结构,可能结合XML或ArrayCollection作为数据源。 4. 事件监听和处理,以实现节点的添加、删除和移动。 5. 可能的服务器端交互,如JSP生成XML数据。 为了实现这个功能,开发者需要熟悉Flex的MXML...

    flex自己开发的demo

    `Tree`组件会自动根据数据模型生成对应的树形结构,用户可以通过展开/折叠节点来查看不同层级的内容。 综上所述,这个Flex demo项目覆盖了数据交互、文件操作、安全验证和复杂UI组件的使用,是学习和实践Flex开发的...

    带选择框_的树

    在IT领域,"带选择框_的树"(checkbox_tree)是一种常见的用户界面元素,它结合了树形结构和复选框的功能。这种组件通常用于数据层级结构的展示,允许用户进行多选操作,比如在文件管理器、权限设置或者组织架构等...

    Java3D用其自己定义的场景图和观察模

    每个节点都可以具有子节点,形成一个树形结构,这种结构清晰地表示了3D世界中的关系。通过操作这个图,你可以控制哪些对象被渲染,以及它们如何相互交互。 观察模式是Java3D中另一个重要的概念,它定义了用户如何...

    IT技术文章示例

    Flex Tree组件是一种树形数据展示控件,常用于表示具有层次结构的数据。实现实时更新,通常需要监听数据源的变化,并在数据变化时触发Tree组件的刷新事件。此外,还可以通过自定义TreeItemRenderer,实现更复杂的...

    programming_flex.pdf

    1. **丰富的UI组件库**:Flex 2提供了一套完整的UI组件库,包括表格、树形结构、下拉菜单等,可以轻松构建复杂的用户界面。 2. **强大的数据绑定能力**:Flex 2支持灵活的数据绑定,使得UI组件能够自动更新数据源中...

    使用页面插件实现网页及时通信Demo

    在Flex实现的Web IM系统中,可能涉及到数据结构设计,如树形结构或图结构,用于存储和操作用户及他们的组关系。此外,还需要处理权限控制,如谁可以添加或删除成员,以及如何处理成员间的权限差异。 5. **...

    Flex Twaver 入门指南中文版

    - **功能**:展示树形结构数据;支持展开/折叠操作;可以使用 DUMMY 对象来填充未定义的部分。 - **使用示例**:创建 Tree 组件后,通过添加根节点和子节点来构建树结构;利用 DUMMY 对象占位符解决数据缺失问题。 ...

    一些extjs的小例子(java)

    ExtJS是一种基于JavaScript的前端...通过研究这些示例,开发者可以更好地理解如何构建树形菜单和Grid,以及如何与后端Java服务进行交互。对于希望提升前端技能或构建企业级Web应用的开发者来说,这是一个宝贵的资源。

    一个OA办公信息服务的开发文档

    - **组件使用**:应用如Application、Panel、Color、TabNavigator、LinkBar、List和Tree等FLEX组件,为用户提供各种功能,如主界面、面板容器、颜色设置、标签导航、链接栏、列表展示和树形结构数据。 4. **后端...

    源码免费课程下载

    3. **组合模式**:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 4. **状态模式**:允许对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。...

    无限极菜单

    无限极菜单在网页设计中是一种常见的交互元素,用于组织复杂层级的数据,如网站导航、文件系统或树形结构。在本案例中,我们讨论的是利用CSS(层叠样式表)和JS(JavaScript)来实现横向和竖向两种无限极菜单的设计...

    red5流媒体资料

    域可以组成树形结构,客户端作为节点共享域内的资源(如流和数据)。 - `IServiceCapableConnection`:用于获取有效的连接。开发者可以通过这个接口判断连接是否有效,并进行相应的操作。 - `IClient`:代表一个独立...

Global site tag (gtag.js) - Google Analytics