【问题标题】:How to loop self referenced class in Jsp?如何在 Jsp 中循环自引用类?
【发布时间】:2015-03-02 22:15:57
【问题描述】:

我已经编写了一个 Node 类,用于将 tree 数据结构存储为,

节点看起来像,

我想开发的树,

public class Node1
{
  public String data;
  public Node1 left;
  public Node1 right;   
  public static int level=0;
  public Node1(String data)
  {
     this.data=data;
     this.left=null;
     this.right=null;
  }
}

我将节点存储为,

 public void add(Node1 ht,Node1 tm,String Data)
  {
    String LNsearchData=Data.substring(0,Data.indexOf("#"));
    Data=Data.substring(Data.indexOf("#")+1);
    //System.out.println("righ"+LNsearchData);
    boolean rights=false,lefts=false;
      while(true)
      {
          if(ht.data.startsWith(LNsearchData))
          {
              System.out.println("righ"+tm.data);
              if(ht.right==null)
              {   rights=true;
                  break;
              }
               ht=ht.right;
               if(Data.length()==0)
                   break;
               LNsearchData=Data.substring(0,Data.indexOf("#"));
               Data=Data.substring(Data.indexOf("#")+1);
           }
          else
          {
              if(ht.left==null)
              {

                  break;
              }
               ht=ht.left;

               if(Data.length()==0)
                   break;
               LNsearchData=Data.substring(0,Data.indexOf("#"));
               Data=Data.substring(Data.indexOf("#")+1);
          }
      }
      if(rights==false)
      {
          System.out.println("righ"+tm.data);
          while(ht.left!=null)
          {
              ht=ht.left;
          }
          ht.left=tm;
      }
      else
      {
          while(ht.right!=null)
          {
              ht=ht.right;
          }
          ht.right=tm;
      }


}

现在我想在jsp中将此节点对象显示为树结构,所以我在jsp中做了,

   <%
    Node1 n1=new Node1("A");
    n1.add(n1, new Node1("B"),"A#");
    n1.add(n1, new Node1("C"),"A#B#");
    n1.add(n1, new Node1("K"),"A#B#C#");
    n1.add(n1, new Node1("E"),"A#");
    n1.add(n1, new Node1("F"),"A#");
    n1.add(n1, new Node1("X"),"X#");

    n1.level=1;
    n1.traverse(n1);

%>

在jsp中构建树形结构,

<%!
public void traverse(Node1 di,JspWriter out)throws IOException
{
   //System.out.println("Par"+di.data+"level"+level);
   out.println("<li class='folder'>"+di.data);
   out.println("  <ul>");
    if(di.right!=null)
    {
      //level++;


      traverse(di.right,out);
      //level--;
    }
    if(di.left!=null)
    {
        out.print("<ul>");
        //out.print("left: "+di.data+"\n");
        traverse(di.left,out);
    }
    if(di.left==null&&di.right==null)
    {
        out.println("</ul>");
    }
   //System.out.println("returnd "+level);

}
%>
<div id="tree">
<%traverse(n1,out); %>
 </div>

我面临的问题是我只能遍历节点的右侧,但我必须遍历两侧。谁能帮我解决这个问题。

【问题讨论】:

标签: java jsp data-structures html-lists self-reference


【解决方案1】:

我猜想 ul 标签没有很好的定义。 试试这个:

<%!
public void traverse(Node1 di,JspWriter out)throws IOException
{

    //System.out.println("Par"+di.data+"level"+level);
    out.println("<li class='folder'>"+di.data);
    if(di.right!=null)
    {
      out.print("<ul>");
      traverse(di.right,out);
      out.println("  </ul>");
    }
    if(di.left!=null)
    {
        traverse(di.left,out);
    }

}
%>
<div id="tree">
  <ul>
    <%traverse(n1,out); %>
  </ul>
 </div>

【讨论】:

  • 不,它不工作。抱歉不提了,我把traverse 称为 `
      `
    • 给我你期望的完整的最终 html
    • 这就是我想要的&lt;div id="tree"&gt; &lt;ul&gt; &lt;li&gt;A &lt;ul&gt; &lt;li&gt;B &lt;ul&gt; &lt;li&gt;C &lt;ul&gt; &lt;li&gt;k &lt;/ul&gt; &lt;/ul&gt; &lt;li&gt;E &lt;li&gt;F &lt;/ul&gt; &lt;li&gt;X &lt;ul&gt; &lt;li&gt;Y &lt;/ul&gt; &lt;/ul&gt; &lt;/div&gt;
    • 谢谢,它工作正常。你能上网吗我在jquery上有另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多