JSTL Spec:
http://jcp.org/aboutJava/communityprocess/final/jsr052/index2.html


The following code runs in my 2.4 Servlet container.
and produces the output:

0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9

<%@ page import="java.util.ArrayList"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c" %>

<%
ArrayList outer = new ArrayList();
for (int i = 0; i < 10; i++) {
        ArrayList inner = new ArrayList();
        
        for (int j = 0; j < 10; j++) {
        
                inner.add(String.valueOf(j));
        
        }
        
        outer.add(inner);               
}
request.setAttribute("outer", outer);

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
        <title>JSTL Nested Loop</title>
</head>

<body>

<c:forEach var="list" items="${outer}" varStatus="outerStatus">
<c:if test="${!outerStatus.first}"><br/></c:if>
  <c:forEach var="item" items="${list}" varStatus="status">
    <c:if test="${!status.first}">/</c:if>
        <c:out value="${item}"/>
  </c:forEach>
</c:forEach>

</body>
</html>

robert

> -----Original Message-----
> From: Dean A. Hoover [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, May 05, 2004 8:48 PM
> To: Struts Users Mailing List
> Subject: Re: inserting delimiters
> 
> 
> Thanks again. Where is the spec?
> I tried what you gave me, slightly edited, as follows:
> 
> <c:forEach var="v" items="${categoryLineages}" varStatus="outerStatus">
> <c:if test="${!outerStatus.first}"><br/></c:if>
> <c:forEach var="seriesCat" items="${v}" varStatus="status">
> <c:if test="${!status.first}">/</c:if>
> <c:out value="${seriesCat.safeTitle}"/>
> </c:forEach>
> </c:forEach>
> 
> I get the following exception:
> [ServletException in:/WEB-INF/tiles/content/misc/EditSeries.jsp] 
> /WEB-INF/tiles/content/misc/EditSeries.jsp(21,0) According to TLD or 
> attribute directive in tag file, attribute items does not accept any 
> expressions' org.apache.jasper.JasperException: 
> /WEB-INF/tiles/content/misc/EditSeries.jsp(21,0) According to TLD or 
> attribute directive in tag file, attribute items does not accept any 
> expressions at 
> org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:83) 
> at
> 
> Know what's wrong?
> 
> Robert Taylor wrote:
> 
> >There are several good references on line for learning JSTL, 
> >but I have found the actual spec itself to be great.
> >
> >I'm assuming you want something like
> ><br>AAA/BBB/CCC<br>DDD/EEE/FFF
> >etc...
> >
> ><c:forEach var="v" items="${vectors}">
> ><br>
> ><c:forEach var="seriesCat" items="${v}" varStatus="status">
> ><c:if test="${!status.first}">/</c:if>
> ><c:out value="$(seriesCat}"/>
> ></c:forEach>
> ></c:forEach>
> >
> >To avoid the first <br>, use the same logic as the inner loop:
> >
> ><c:forEach var="v" items="${vectors}" varStatus="outerStatus">
> ><c:if test="${!outerStatus.first}"><br></c:if>
> ><c:forEach var="seriesCat" items="${v}" varStatus="status">
> ><c:if test="${!status.first}">/</c:if>
> ><c:out value="$(seriesCat}"/>
> ></c:forEach>
> ></c:forEach>
> >
> >should produce something like:
> >
> >AAA/BBB/CCC<br>DDD/EEE/FFF
> >etc...
> >
> >BTW, this code is untested, but it should work.
> >
> >robert
> >
> >  
> >
> >>-----Original Message-----
> >>From: Dean A. Hoover [mailto:[EMAIL PROTECTED]
> >>Sent: Wednesday, May 05, 2004 8:01 PM
> >>To: [EMAIL PROTECTED]
> >>Subject: Re: inserting delimiters
> >>
> >>
> >>Thanks Robert. It looks like I need to learn JSTL. Any
> >>suggestions? Also, the original problem I posted has changed
> >>a little. I am now stuffing a Vector of Vectors of SeriesCategory
> >>(my object). SeriesCategory has a getSafeTitle() method that gets
> >>an XML safe character string title for the category. This is a little
> >>like the problem I posted, except that the outer loop needs a
> >><br/> delimiter and the inner loop needs the / delimiter. What
> >>might that look like?
> >>
> >>Robert Taylor wrote:
> >>
> >>    
> >>
> >>>One solution would be the following:
> >>>
> >>><c:forEach var="item" items="items" varStatus="status">
> >>><c:if test="${!status.first}">/</c:if>
> >>><c:out value="$item"/>
> >>></c:forEach>
> >>>
> >>>robert
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>>>-----Original Message-----
> >>>>From: Dean A. Hoover [mailto:[EMAIL PROTECTED]
> >>>>Sent: Wednesday, May 05, 2004 8:02 AM
> >>>>To: [EMAIL PROTECTED]
> >>>>Subject: inserting delimiters
> >>>>
> >>>>
> >>>>I have a Collection of Strings that I
> >>>>want to render with delimiters. Suppose
> >>>>The Strings are "AAA", "BBB", and "CCC".
> >>>>For example, I want to delimit the strings
> >>>>with /
> >>>>
> >>>>So the insertion would look like this:
> >>>>AAA/BBB/CCC
> >>>>
> >>>>How would you recommend I go about it?
> >>>>If I were doing this in Java instead of JSP
> >>>>I would treat the first pass through the loop
> >>>>as a special case. I'm not sure how to do this
> >>>>with the logic or JSTL tags.
> >>>>
> >>>>Thanks.
> >>>>Dean Hoover
> >>>>
> >>>>
> >>>>---------------------------------------------------------------------
> >>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>    
> >>
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >  
> >
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

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

Reply via email to