public int doStartTag() throws JspException { try { SiteContext sc = (SiteContext) pageContext.getRequest().getAttribute(SiteContext.SITE_CONTEXT_KEY); AccessRuleEngine re = ContextUtils.getAccessRuleEngine((HttpServletRequest) pageContext.getRequest()); Page page = null; Page currentInTree = sc.getPage(); if (m_strParent != null) // 直接指定了要展现的根栏目 page = (Page) pageContext.getAttribute(m_strParent); else if (m_iLevel > -1) { // 指定了要展现的级别 if (m_iLevel <= currentInTree.getLevel()) { page = currentInTree; while (m_iLevel < page.getLevel()) page = page.getParent(); } } else { // 没有指定根栏目 TreeTag tt = (TreeTag) TagSupport.findAncestorWithClass(this, TreeTag.class); if (tt != null) page = tt.getPage(); else page = sc.getBranch().getHome(re); } if (page == null) return SKIP_BODY; m_enum = Collections.enumeration(page.getPages(re, false, true)); Object next = nextElement(); if (next == null) return SKIP_BODY; m_bFirst = true; if (m_strName != null) pageContext.setAttribute(m_strName, next); return EVAL_BODY_BUFFERED; } catch (Exception e) { e.printStackTrace(); throw new JspException(e.getMessage()); } }