Beispiel #1
0
  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());
    }
  }