⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treetapestry.java.svn-base

📁 tapestry json 实现从数据库读取数据生成树
💻 SVN-BASE
字号:
package com.xino.tree;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.tapestry.IExternalPage;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.html.BasePage;

import Metis.Common.Web.Ext2.Tree.TreeNode;

import com.xino.dao.TreeDao;

import freemarker.template.Configuration;
import freemarker.template.Template;

/*
 * $Id$ 
 * 
 * Copyright (C)2002-2008 福建鑫诺.All rights reserved. 
 *
 * TreeTapestry.java
 * 
 * Original Author: 何则锐,2008-5-27
 *
 * 文件功能说明:  
 * <文件功能说明>
 * History
 * 版本号  |   作者   |  修改时间   |   修改内容
 */
public abstract class TreeTapestry extends BasePage implements IExternalPage {

	@SuppressWarnings("unused")
	//private static final Log log = LogFactory.getLog(TreeTapestry.class);

    private String node;
	
    private List<TreeNode> nodes = new ArrayList<TreeNode>();

    public List<TreeNode> getChildNodes() {
            // TODO Auto-generated method stub

            List<TreeNode> nodes = new ArrayList<TreeNode>();
           
            //通过数据库获取数据
            TreeDao dao = new TreeDao();
            //根据节点找出下级节点
            nodes = dao.getAreaInfoListByCode(this.getNode());
            
            
            /*TreeNode tn1 = new TreeNode();
            tn1.setId(new UID().toString());
            tn1.setName("子节点1");
            tn1.setHasChild(true);
            TreeNode tn2 = new TreeNode();
            tn2.setId(new UID().toString());
            tn2.setName("子节点2");
            tn2.setHasChild(true);
            TreeNode tn3 = new TreeNode();
            tn3.setId(new UID().toString());
            tn3.setName("子节点3");
            tn3.setHasChild(false);

            nodes.add(tn1);
            nodes.add(tn2);
            nodes.add(tn3);*/

            return nodes;
    }

    public TreeNode getRoot() {
            // TODO Auto-generated method stub
            TreeNode tn = new TreeNode();
            tn.setId("0");
            tn.setName("广东省");
            tn.setHasChild(true);
            return tn;
    }

    @SuppressWarnings("unchecked")
	public void activateExternalPage(Object[] obj, IRequestCycle cycle) {
		HttpServletResponse req = cycle.getRequestContext().getResponse();
		this.setNode(cycle.getRequestContext().getParameter("node"));
		if (this.getNode().equals("extroot")) {
			this.nodes = new ArrayList<TreeNode>();
			this.nodes.add(getRoot());
		} else {
			this.nodes = getChildNodes();
		}
		//System.out.println(this.getNode());
		// System.out.println("gfdgsdfg111");
		req.setHeader("Pragma", "No-Cache");
		req.setHeader("Cache-Control", "No-Cache");
		req.setDateHeader("Expires", 0);

		Configuration cfg = new Configuration();

		cfg.setServletContextForTemplateLoading(cycle.getRequestContext()
				.getServlet().getServletContext(), "/ftl");

		Map root = new HashMap();
		root.put("nodes", this.getNodes());

		req.reset();
		req.setCharacterEncoding("utf-8");
		ByteArrayOutputStream tempSteam = new ByteArrayOutputStream();
		PrintWriter pw = new PrintWriter(tempSteam);
		try {
			Template t = cfg.getTemplate("AjaxTreeNode.ftl");
			t.process(root, pw);

		} catch (Exception e) {
			e.printStackTrace();

		}

		OutputStream out = null;
		String jsonstr = tempSteam.toString();
		//System.out.println(jsonstr);

		try {
			tempSteam.close();
			req.setContentType("text/xml");
			req.setCharacterEncoding("utf-8");
			out = req.getOutputStream();
			out.write(jsonstr.getBytes("utf-8"));
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}


    public String getNode() {
            return node;
    }

    public void setNode(String node) {
            this.node = node;
    }

    public List<TreeNode> getNodes() {
            return nodes;
    }

    public void setNodes(List<TreeNode> nodes) {
            this.nodes = nodes;
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -