首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2 dojo 兑现动态树

2012-10-09 
struts2 dojo 实现动态树1.首先写两个工具类:TreeData.java 和 TreeUtil.javaTreeData.javapackage com.zj

struts2 dojo 实现动态树

1.首先写两个工具类:TreeData.java 和 TreeUtil.java

TreeData.java

package com.zjh.shopping.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class TreeData {
??? public static Map<Integer, TreeData> catMap = new HashMap<Integer, TreeData>();
???
??? public static TreeData getById(int id) {
??????? return catMap.get(id);
??? }
???
??? private int id;
??? private String name;
??? private List<TreeData> children;
??? private boolean toggle;
??? public TreeData(int id, String name, TreeData... children) {
??????? this.id = id;
??????? this.name = name;
??????? this.children = new ArrayList<TreeData>();
??????? for (TreeData child : children) {
??????????? this.children.add(child);
??????? }
??????? catMap.put(id, this);
??? }
??? public TreeData(){}
??? public int getId() {
??????? return id;
??? }
??? public void setId(int id) {
??????? this.id = id;
??? }
??? public String getName() {
??????? return name;
??? }
??? public void setName(String name) {
??????? this.name = name;
??? }
??? public List<TreeData> getChildren() {
??????? return children;
??? }
??? public void setChildren(List<TreeData> children) {
??????? this.children = children;
??? }
??? public void toggle() {
??????? toggle = !toggle;
??? }
??? public boolean isToggle() {
??????? return toggle;
??? }
}

TreeUtil.java

?package com.zjh.shopping.util;

import java.util.ArrayList;
import java.util.List;

import com.zjh.shopping.dao.TreeBaseDao;


?
public class TreeUtil {
?List<Integer> childrenId;
??? public TreeData createTreeData(int parentId,TreeBaseDao treeBaseDao){
??? ??TreeData treeData = new TreeData();
??? ??treeData.setId(parentId);
??? ??treeData.setName(treeBaseDao.getObjectName(parentId));?
??? ??
??? ??? List<TreeData> children = new ArrayList<TreeData>();
??? ?
??? ?childrenId = treeBaseDao.getChildrenId(parentId);
??? ? if(childrenId!=null){
???? ? for(int id :childrenId){
???? ??TreeData c1 = createTreeData(id,treeBaseDao);
???? ??children.add(c1);
???? ? }
???? ? treeData.setChildren(children);
???? ? TreeData.catMap.put(parentId, treeData);
???? ? return treeData;
??? ? }
??? ?? else
??????? ?? TreeData.catMap.put(parentId, treeData);
??????? ? ?return treeData;
??? ?? }
?? }

2.写dao和它的实现类:

package com.zjh.shopping.dao;

import java.util.List;

public interface TreeBaseDao {
?
?public List<Integer> getChildrenId(int parentId);
?
?public String getObjectName(int id);
}

package com.zjh.shopping.dao;

import com.zjh.shopping.bean.Category;

public interface CategoryDao extends BasicDao<Category>,TreeBaseDao{
?? public int getMaxCnoByPid(int pid);
?? public int getCnobyId(int id);
}

?

package com.zjh.shopping.dao.impl;

import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.zjh.shopping.bean.Category;
import com.zjh.shopping.dao.CategoryDao;

public class CategoryDaoImpl extends HibernateDaoSupport implements CategoryDao {

?


?public List<Integer> getChildrenId(int parentId) {
??List<Integer> list = null;
??String hql = "select id from Category";
??if(parentId==0){
???hql += " where pid is null";
???
??}else{
???hql += " where pid ="+parentId;
??}
??list = getHibernateTemplate().find(hql);
??return list;
?}

?public String getObjectName(int id) {
??String name = "";
??if(id==0){
???name = "所有类别";
??}else{
???name = getEntity(id).getName();
??}
??return name;
?}

}

3.写action

package com.zjh.shopping.action;


import com.opensymphony.xwork2.ActionSupport;
import com.zjh.shopping.dao.CategoryDao;
import com.zjh.shopping.util.TreeData;
import com.zjh.shopping.util.TreeUtil;

public class ShowCategoryDynamicTreeAction extends ActionSupport {
?private CategoryDao categoryDao;
?public CategoryDao getCategoryDao() {
??return categoryDao;
?}
?public void setCategoryDao(CategoryDao categoryDao) {
??this.categoryDao = categoryDao;
?}


?
?public TreeData getTreeRootNode() {
????? TreeUtil treeUtil = new TreeUtil();//call a tree util
???? ?treeUtil.createTreeData(0,categoryDao);//input a corresponding dao
???? ?System.out.println("TreeData.getById(1)? ........."+TreeData.getById(0).getName());
???????? return TreeData.getById(0);
? }
}

4.显示层页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
?pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
?<head>
??<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
??<meta http-equiv="Pragma" content="no-cache">
??<meta http-equiv="expires" content="Wed, 23 Aug 2006 12:40:27 UTC" />
??<title>类别树形列表</title>
??<link href="css/Main.css" type="text/css" rel=stylesheet>
??<sx:head />
?</head>
?<body>
??<script language="javaScript" type="text/javascript">
?//dojo tree 加载页面后一次性展开树所有节点
?dojo.addOnLoad( function() {
??expandObj(dojo.widget.byId('categoryTreeId'));//为下面标签的ID
??});
?function expandObj(obj) {
??if (obj) {
???if (obj.children) {
????for ( var i = 0; i < obj.children.length; i++) {
?????var childObj = obj.children[i];
?????if (childObj) {
??????try {
???????childObj.expand();
??????} catch (e) {
??????}
??????if (childObj.children) {
???????expandObj(childObj);
??????}
?????}
????}
???}
??}
?}
??? //点击树的节点时候触发的事件
?dojo.event.topic.subscribe("treeSelected", function treeNodeSelected(node) {
??dojo.io.bind( {
???url :"<s:url value='showCategoryDynamicTree.action'/>",
???load : function(type, data, evt) {
????//var divDisplay = dojo.byId("displayId");
?
???if (node.node.isFolder == false) {
????//alert("12");
???var cNode = document.getElementByIdx("categoryName");
???cNode.value = node.node.title;

??// cNode.value = node.node.widgetId;
???window.parent.fillStaff(rtnValue);
??}
?},
?mimeType :"text/Html"
??});
?});
</script>

??<input type="text" id="categoryName" readonly="readonly">
??<div>
???<sx:tree id="categoryTreeId" rootNode="%{treeRootNode}"
????childCollectionProperty="children" nodeIdProperty="id"
????nodeTitleProperty="name" treeSelectedTopic="treeSelected">
???</sx:tree>
??</div>
??<div id="displayId" style="display: none;">
???Please click on any of the tree nodes.
??</div>

?</body>
</html>

?

5.配置文件

<action name="showCategoryDynamicTree" src="/img/2012/09/24/094928233.jpg">
?

7.显示结果


struts2 dojo 兑现动态树
?

来自:http://blog.sina.com.cn/s/blog_6145ed810100hawn.html

?

?

热点排行