解决方案 »

  1.   

    好长。排版一下撒。
    你这是想要 jstl 嵌套遍历吗?怎么没有看到 jstl 遍历标签代码?
      

  2.   

    VO类:
    package Tmall.com.VO;import java.util.ArrayList;
    import java.util.List;public class HeaderVO 
    {
    private int id;
    private int pId;
    private String myTmallName;
    private HeaderVO parent;
    private List<HeaderVO> child = new ArrayList<HeaderVO>();

    public List<HeaderVO> getChild() {
    return child;
    }
    public void setChild(List<HeaderVO> child) {
    this.child = child;
    }
    public HeaderVO getParent() {
    return parent;
    }
    public void setParent(HeaderVO parent) {
    this.parent = parent;
    }
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public int getpId() {
    return pId;
    }
    public void setpId(int pId) {
    this.pId = pId;
    }
    public String getMyTmallName() {
    return myTmallName;
    }
    public void setMyTmallName(String myTmallName) {
    this.myTmallName = myTmallName;
    }
    }public List<HeaderVO> getHeaderNav()
    {
    List<HeaderVO> headerNavList = new ArrayList<HeaderVO>();
    DBConnection DBC = new DBConnection();
    HeaderVO myHeaderNav = null;
    String sql = "select * from Test";
    ResultSet rs;
    try {
    rs = DBC.executeQuery(sql);
    while(rs.next())
    {
    int id = rs.getInt("id");
    int pId = rs.getInt("pId");
    String myHeaderNavName = rs.getString("navName");

    myHeaderNav = new HeaderVO();
    myHeaderNav.setId(id);
    myHeaderNav.setpId(pId);
    myHeaderNav.setMyTmallName(myHeaderNavName);

    HeaderVO grandParent = new HeaderVO();
    grandParent.setId(pId);
    myHeaderNav.setParent(grandParent);

    HeaderVO parent = new HeaderVO();
    parent.setId(pId);
    myHeaderNav.setParent(parent);

    HeaderVO nephew = new HeaderVO();
    nephew.setId(pId);
    myHeaderNav.setParent(nephew);

    headerNavList.add(myHeaderNav);
    }
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally{
    DBC.close();
    }
    return wrapHeaderNavList(headerNavList);
            }
    private List<HeaderVO> wrapHeaderNavList(List<HeaderVO> headerNavList)
    {
    List<HeaderVO> grandParent = new ArrayList<HeaderVO>();
    if(headerNavList != null && headerNavList.size() > 0)
    {
    for(HeaderVO headerNavListGrandParent : headerNavList)
    {
    if(headerNavListGrandParent.getParent().getId() == 0)
    {
    grandParent.add(headerNavListGrandParent);
    for(HeaderVO headerNavListParent : headerNavList)
    {
    if(headerNavListParent.getParent().getId() == headerNavListGrandParent.getId())
    {
    headerNavListParent.setParent(headerNavListGrandParent);
    headerNavListGrandParent.getChild().add(headerNavListParent);
    for(HeaderVO headerNavListChild : headerNavList)
    {
    if(headerNavListChild.getParent().getId() == headerNavListParent.getId())
    {
    headerNavListChild.setParent(headerNavListParent);
    headerNavListParent.getChild().add(headerNavListChild);
    for(HeaderVO headerNavListNephew : headerNavList)
    {
    if(headerNavListNephew.getParent().getId() == headerNavListChild.getId())
    {
    headerNavListChild.getChild().add(headerNavListNephew);
    headerNavListNephew.setParent(headerNavListChild);
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return grandParent;
          }JSTL:
    <c:forEach items="${myHeaderNav}" var="myHeaderNavs">
                                <i><img src="IMG/nav.png"></i>
                                <a href="#">${myHeaderNavs.myTmallName}</a>
                                <b></b>
                             <div class="headerNavDiv">
                                    <c:forEach items="${myHeaderNavs.parent}" var="myHeaderNavParents">
                                        <div class="headerNavDivListLeft">
                                            <p>${myHeaderNavParents.myTmallName}</p> 
                                            <c:forEach items="${myHeaderNavParents.child}" var="myHeaderNavParentChilds">
                                                <ol class="headerleft">
                                                <c:forEach items="${myHeaderNavParentChilds.nephew}" var="myHeaderNavnephews">
                                                    <li><a href="#">${myHeaderNavnephews.myTmallName}</a></li>
                                                </c:forEach>
                                                </ol>
                                            </c:forEach>
                                        <div class="block"></div>
                                        </div>
                                    </c:forEach>
    </c:forEach>
      

  3.   

    你有把对象setAttribute()吗?我怎么没看到。你这是放哪个作用域了?
      

  4.   

    你能把你使用的框架配置文件信息给看吗? "${myHeaderNavs.parent}"  你这个得到是一个对象?还是一个属性?JSL是什么东西?你说的是JSTL吧
      

  5.   

    import java.util.*;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.*;
    import Tmall.com.DAO.HeaderDAO;
    import Tmall.com.VO.HeaderVO;public class IndexServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    // TODO Auto-generated method stub

    this.doPost(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    // TODO Auto-generated method stub

    HeaderDAO headerDAO = new HeaderDAO();
    List<HeaderVO> myTmall = headerDAO.getMyTmall();
    req.setAttribute("myTmall", myTmall);
    List<HeaderVO> myCollection = headerDAO.getCollection();
    req.setAttribute("myCollection", myCollection);
    List<HeaderVO> myHeaderNav = headerDAO.getHeaderNav();
    req.setAttribute("myHeaderNav", myHeaderNav);
    req.getRequestDispatcher("/index.jsp").forward(req,resp);
    }
    }