论坛首页 Web前端技术论坛

求动态创建树的实例和方案

浏览 14913 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-01-09  
我希望这样实现我得动态树:

缺省情况只是得到全部的父亲节点,当点击父亲节点的时候,读取该父亲的儿子节点(不包括孙子),然后页面局部刷新,如此来展现。

我所知道的比较推荐的方法是用xloadtree来实现client-side,但是当
我点击父亲节点的时候,client-side javascript获得这个事件后,如何向服务端发出请求,并由服务端临时产生一个xml文件传回客户端,然后client-side javascript获取这个xml文件后,来展现儿子列表的过程一头雾水。

哪位高手有整个实例?感激不敬:)
网上的资料我实在是没有找到比较好的实例,尤其是关于
client-side javascript获得这个事件后,如何向服务端发出请求,并由服务端临时产生一个xml文件传回客户端,然后client-side javascript获取这个xml文件后

我只不过需要实现一个动态的树,如果是更好的实现方案,也欢迎多多建议。
   发表时间:2004-01-09  
附件是我以前做的一个xloadtree的demo。

主要是需要设置contentType:
response.setContentType("text/xml");
然后输出xml内容即可。

这个demo只是演示了随机生成xml内容,将你的业务代码加入(比如从数据库获取资料),应该可以满足你的项目需求了。

下载附件,发布到任意jsp/servlet container, 访问 /xloadtree/index.jsp 可以看到demo。
0 请登录后投票
   发表时间:2004-01-09  
论坛好像不能上传附件了,从这里下载吧:

http://quake.3322.org/temp/xloadtree.war
0 请登录后投票
   发表时间:2004-01-09  
谢谢提醒,已解决。
0 请登录后投票
   发表时间:2004-01-10  
大恩不言谢:)
0 请登录后投票
   发表时间:2004-02-08  
我把demo中的index.jsp的chartset设置为GBK或GB2312后,都为乱码。
请问如何解决中文字符问题呢?
0 请登录后投票
   发表时间:2004-02-09  
我是用UTF-8 + Resource Bundle来做多语言的,没有碰到中文的问题,但是对于GBK编码在JSP hardcode中文没有实际经验,不能帮你什么了。

网络上有很多关于中文乱码的资料,你google看吧,good luck。
0 请登录后投票
   发表时间:2004-03-05  
Tomcat带个CharsetFilter,加到你App中试试,能解决JSp中的中文语言
0 请登录后投票
   发表时间:2004-03-09  
我是如Quake Wang所说,将业务代码写在生成XML处,大体如下:
引用
public class TreeDataSeedServlet extends HttpServlet {

    protected void doGet(
        HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException, IOException {
        defaultProcess(request, response);
    }
    protected void doPost(
        HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException, IOException {
        defaultProcess(request, response);
    }
    private void defaultProcess(
        HttpServletRequest request,
        HttpServletResponse response)
        throws IOException {
           
        long id = Integer.parseInt(request.getParameter("id"));
        Connection conn = ConnPoolHandler.getConnection();

        String outStr = "";
        try {
            outStr = createXMLFromDB(id, conn);
            //outStr=createXMLFromMock(id);
        } catch (Exception e) {
            // TODO 自动生成 catch 块
            e.printStackTrace();
        }
        response.setContentType("text/xml");
        response.getWriter().write(outStr);
    }

    /**
     * 生成客户端需要的xml文档
     * @param id
     * @param conn
     * @return
     * @throws SQLException
     */
    private String createXMLFromDB(long id, Connection conn)
        throws SQLException {
            System.out.println("Eniter createXMLFromDB()..............");
        StringBuffer outSB = new StringBuffer();

        outSB.append("<?xml version=\"1.0\"?>")
             .append("<tree>");
       
       
        List list =
            DAOFactory
                .getDAOFactory(DAOFactory.DATABASE_ORACLE)
                .createTreeDAO()
                .getTreeArc(
                conn,
                id,
                1);
        Iterator it=list.iterator();
        Node node=new Node();
        while(it.hasNext()){
                    node=(Node)it.next();
                    String name = node.getName();
                    long nodeID=node.getID();
                    boolean isLeaf=node.getIsLeaf();
                   System.out.println("........name="+name+"....... ");
                   try {
                         outSB.append("<tree text=\"")
                                 .append(name)
                                 .append("\""); 
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }                 
                    
                     if (!isLeaf) {
                        outSB.append(" ")
                             .append("src=\"tree.xml?id=")
                             .append(nodeID)
                             .append("\"");
                    }                            
                    outSB.append("/>");                  
        }
       
        outSB.append("</tree>");
        System.out.println(outSB.toString());
        System.out.println("Exit createXMLFromDB()..............");
        return outSB.toString();
    }

如果在生成的XML中存在中文字符,在XLOADTREE在显示时不正常,会弹出一个什么字符都没有的ALTER,我在jsp中有
<meta http-equiv="Content-Type" content="text/html; CHARSET=utf8" />
,为什么?????
0 请登录后投票
   发表时间:2004-03-09  
我的那个demo里面没有指定编码,修改一下这句话:outSB.append("&lt;?xml version=\"1.0\"?&gt;")
用UTF-8:
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics