Jacky Chu - 2005-04-23

How to get the data from a List which is contain in another List?
Here is the screenshot:
<img alt="screenshot.jpg" src="http://www.javaworld.com.tw/blog/archives/piggy/screenshot.jpg" width="221" height="158" border="0" />

Here is the example using Scriplets:

<code>
<%@page contentType="text/html; charset=UTF-8" %>
<%@page import="java.util.*" %>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<%!
class Department
{
private String name;
private List members;

    public Department()
    {
        members = new ArrayList();
    }

    public Department(String name)
    {
        this();
        this.name = name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getName()
    {
        return this.name;
    }

    public List getMembers()
    {
        return this.members;
    }

    public void setMembers(List members)
    {
        this.members = members;
    }

    public void addMember(Member member)
    {
        members.add(member);
    }
}

class Member
{
    private String name;

    public Member() { }

    public Member(String name)
    {
        this.name = name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getName()
    {
        return this.name;
    }        
}

%>
<%
Department salesDept = new Department("Sales");
salesDept.addMember(new Member("Jacky"));
salesDept.addMember(new Member("Maggie"));
salesDept.addMember(new Member("Alice"));

Department engineerDept = new Department(&quot;Engineer&quot;);
engineerDept.addMember(new Member(&quot;Joey&quot;));
engineerDept.addMember(new Member(&quot;Michael&quot;));

List departments = new ArrayList();
departments.add(salesDept);
departments.add(engineerDept);
request.setAttribute(&quot;departments&quot;, departments);

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>

&lt;table border=&quot;1&quot;&gt;
    &lt;tr&gt;
        &lt;td align=&quot;center&quot;&gt;&amp;nbsp;&amp;nbsp;Department&amp;nbsp;&amp;nbsp;&lt;/td&gt;
        &lt;td align=&quot;center&quot;&gt;&amp;nbsp;&amp;nbsp;Member&amp;nbsp;&amp;nbsp;&lt;/td&gt;
    &lt;/tr&gt;

    &lt;%
        departments = (List)request.getAttribute(&quot;departments&quot;);
        Iterator it = departments.iterator();
        while (it.hasNext())
        {
            Department department = (Department)it.next();
            boolean addRowSpan = true;

            List members = department.getMembers();
            Iterator it2 = members.iterator();
            while (it2.hasNext())
            {
                Member member = (Member)it2.next();
    %&gt;
            &lt;tr&gt;
                &lt;% if (addRowSpan == true &amp;&amp; members.size() &gt; 1) { %&gt;
                &lt;td rowspan=&quot;&lt;%=members.size()%&gt;&quot; valign=&quot;top&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;%=department.getName()%&gt;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
                &lt;%  addRowSpan = false; } %&gt;
                &lt;td&gt;&amp;nbsp;&amp;nbsp;&lt;%=member.getName()%&gt;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
            &lt;/tr&gt;
    &lt;%
            }
        }
    %&gt;

&lt;/table&gt;

</body>
</html>
</code>