这个属于自身表无限极遍历 不知道这个标签支持 吗?
部门表:tblBasDepartments
文件名是:TblBasDepartment        private String deptId;
private TblBasDepartment tblBasDepartment;
private String deptFlag;
private String deptName;
private Set<TblBasDepartment> tblBasDepartments = new LinkedHashSet<TblBasDepartment>();
private Set<TblSysUser> tblSysUsers = new LinkedHashSet<TblSysUser>();       //set get 省略
   <s:iterator value="tblBasDepartments" >
          ${deptName}
          <s:iterator value="tblSysUsers">
 ${userName}
  </s:iterator>
    </s:iterator>我想这样的数据
总公司
    |___分一公司  ----- 很多用户
         |__分二公司  ------很多用户
             |__分三公司   -------很多用户
             :
             :
很多级别的数据
      不是树是一种包含关系,因为我对部门表进行了自关联。
      这个的构造用标签可以无限级遍历出来吗?

解决方案 »

  1.   

    首先公司表要有个 companyType (公司类别)
    用户表有个 userDepart (用户所属公司[对应公司表的公司类型字段])<s:iterator value="tblBasDepartments"> //所有的公司          ${deptName}
         <s:iterator value="tblSysUsers"> //所以用户    
              <s:if test="userDepart == companyType"> //判断如果用户公司和外循环的公司的类别相同那么就显示用户信息, 如果不相同就不显示.            
                  ${userName }
             </s:if>
         </s:iterator>                                            
    </s:iterator>这个不知是不是楼主的意思...
      

  2.   

    </s:iterator>似乎没有这样用的.
      

  3.   

    这个用标签实现有点复杂.
    可能写个函数比较明白.自定义标签也行.
    直接jsp脚本更明了
      

  4.   

    这个部门是 有个PID 可以判断是否有父节点,估计这么一说就明白了
    每个部门又跟人员关联起来。
    我现在就是 列出部门和人员。部门按照 树形结构列出来。
    因为OGNL表达式可以用 department.user 取出用户列表 一对多的关系
    然而部门又跟自身是一对多
      

  5.   

    可以进行遍历,只要把数据组织好就可以。
    package com.szk.debug.struts.tags.bean;import java.util.List;/**
     * クラス名称:DT0006Bean
     * 
     * @author szk
     * @since 2009-07-20
     */
    public class DT0006Bean { /** 名称 */
    private String name; private List<DT0006Bean> beanList; /**
     * @return the beanList
     */
    public List<DT0006Bean> getBeanList() {
    return beanList;
    } /**
     * @param beanList
     *            the beanList to set
     */
    public void setBeanList(List<DT0006Bean> beanList) {
    this.beanList = beanList;
    } /**
     * @return the name
     */
    public String getName() {
    return name;
    } /**
     * @param name
     *            the name to set
     */
    public void setName(String name) {
    this.name = name;
    }
    }
      

  6.   

    10楼的我的意思是在页面展示 。不是在后台。
    在页面类似于这样的判断
    for (var i=0;i<deparmentList.size;i++)
    {
    while (deparmentList[i].userList.size >0)
    {
    System.out.println("*********");
    }
    }
      

  7.   


    写个自定义的jsl标签吧,实现for循环的函数.
    其实用jsp代码还来得简单哦.呵呵
      

  8.   

    标准的<s>便签无法实现你的需求哦
      

  9.   

    像你这种情况,在你的部门表中结构起码应该是这样的
    int deptid
    int parentid;    -------与deptid互为父
    其实与<s:iterator>没多大关系
      

  10.   


    对是这样的。
    我现在尝试用 递归去做。不用标签了。
    用在jsp上写 java调用递归方法。但是递归方法也很复杂。正在思考中。下边有错误: 不过正在修改中 已经出现 死循环。刚才开会就没改。public class DepartmentUtilServlet implements Serializable{
    /**
         * 查询所有List子节点
         * @return List
         */
    public static List<TblBasDepartment> getChildNodesDepthFirst(List<TblBasDepartment> list) {
    List<TblBasDepartment> result = new ArrayList<TblBasDepartment>();
    addChildNodesDepthFirst(result,list);
    return result;
    } static void addChildNodesDepthFirst(List<TblBasDepartment> result,List<TblBasDepartment> list) {
    for (TblBasDepartment tblBasDepartment : list) {
    result.add(tblBasDepartment);
    if (tblBasDepartment.getTblBasDepartments() != null) {
    for (Iterator<TblBasDepartment> iter = tblBasDepartment.getTblBasDepartments().iterator(); iter.hasNext();) {
    result.add(iter.next());
    addChildNodesDepthFirst(result,list);
    }
    }

    }

    }}
      

  11.   


    这个自对应表  private String deptId;
      private TblBasDepartment tblBasDepartment;  //其实这里就是deptPid只不过对应自身的deptId了
      

  12.   

    只要参加讨论的我就会给分,关于递归的 有好的解决方法也可以。我主要 想在性能上 能有所提高 要是自己拼接字符串在页面插入的话 那样性能很慢例如一个组织机构 有几百个层级关系会很慢。还是用算法在后台弄出来 传到前台就行了。
    -----------------------------------------------------------
    我那个递归的思路是 不分他的父亲和孩子 都放在一起。组成一个List。
    因为List是有序集合,我在页面遍历的时候  当前PID是够等于 上一个节点的ID 是就是父子关系。
    把这行数据移动(width:30PX) 就行
     
    这是目前的解决思路。
    因为我用的是 对象关联关系,所以主要取出部门 用户就可以取出。用的是惰性加载机制。
      

  13.   

    没有人遇到这样的问题吗?CSDN怎么了?
      

  14.   

    look my blog: http://xieruilin.javaeye.com/admin/blogs/858657