Subject: Re: [Off Topic] Iterating through Parents/children help
From: "Matt Raible" <[EMAIL PROTECTED]>
 ===
Here's what I came up with using JSTL, but there's GOT to be a better
(recursive) way of doing this:

<c:forEach var="catalog" items="${myCatalog}">
    <c:out value="${catalog.name}"/><br/>
    <%-- Show all the items in this catalog --%>
    <c:forEach var="link" items="${catalog.items}">
        <c:out value="${link.name}"/>
    </c:forEach>

    <%-- show all the child catalogs for this catalog --%>
        <c:forEach var="child1" items="${catalog.catalogs}">
            <c:out value="${child1.name}"/>

            <%-- Show all the items in this catalog --%>
            <c:forEach var="link" items="${child1.items}">
                <c:out value="${link.name}"/></a>
            </c:forEach>

            <%-- show all the child catalogs for this catalog --%>
            <c:forEach var="child2" items="${child1.catalogs}">
                <c:out value="${child2.name}"/>

                <%-- Show all the library items in this catalog --%>
                <c:forEach var="link" items="${child2.items}"
varStatus="status">
                    <c:out value="${link.name}"/>
                </c:forEach>

                <%-- show all the child catalogs for this catalog --%>
                    <c:forEach var="child3" items="${child2.catalogs}">
                        <c:out value="${child3.name}"/>

                        <%-- Show all the items in this catalog --%>
                        <c:forEach var="link" items="${child3.items}"
varStatus="status">
                            <c:out value="${link.name}"/>
                        </c:forEach>
                    </c:forEach>
                </c:forEach>
        </c:forEach>
</c:forEach>

"Matt Raible" <[EMAIL PROTECTED]> wrote in message
news:afquue$811$[EMAIL PROTECTED]...
> I have an difficult architecture problem.  Please help if you can.  Below
> are two tables that are linked by catalog_id.
>
> catalog
> --------------
> catalog_id
> catalog_name
> parent_id
>
> catalog_detail
> ---------------
> detail_id
> catalog_id
> detail_name
> detail_description
> detail_url
>
>
> So basically, these two tables are used to render the following in the
> "view"
>
> My First Catalog Entry
>   -- URL to detail Entry
>   -- URL to detail Entry
>
> My Second Catalog Entry
>   -- URL to detail Entry
>
> ... you get the picture.
>
> My problem comes in in that a catalog entry can be a child of another
> catalog entry (not a detail entry).  So you'd end up with something like
> this:
>
> My First Catalog Entry
>   -- 1
>   -- 2
>   My Second Catalog Entry
>     -- 3
>     --
>     My Third Catalog Entry....
>
> I need help with (1) How do I prepare this data for display on a page, and
> (2) How do I design my page without knowing how many levels deep to go?
>
> Here are my solutions to date:
>
> 1.  I query the catalog table, and create an ArrayList of CatalogForm's
> (JavaBeans).  As I'm adding a CatalogForm to the arraylist, I use the
> catalog_id to get the children of that catalog entry and set them as a
> Vector of DetailForm's on the CatalogForm.  This works great without the
> parent concept.  With the parent concept, maybe I should keep what I'm
> doing, but then lookup through the ArrayList and see if any CatalogForm's
> have parents.  If so, set the CatalogForm as a ChildForm on it's parent.
>
> 2.  Use JSTL and <c:forEach> to iterate through the catalogForm's and
> display the name and the detail's information.  I can add a few more
> <c:forEach> tags, but this will only allow the architecture to traverse
the
> number of levels that I've defined in my JSP.  Is there anyway to allow
for
> infinite levels?  Maybe some sort of reflection - or even using XML and
XSL?
> Any and all ideas are welcome.
>
> Finally, I am only responsible for displaying this data, nothing has to be
> updated - that's up to another application that's already been written.
>
> Thanks,
>
> Matt
>
>



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to