I have a c:forEach where "items" refers to a Map, and "var" refers to the current Map entry.

<c:forEach items="myMap" var="currentEntry">

The value for each Map entry is an array. How do I switch on the length of this array? I tried this:

<c:when test="${currentEntry.value.length > 5}">

But I get a syntax error; it says I supplied the "." operator with an index value of type "java.lang.String" to be applied to an array, but that the value cannot be converted to an integer.

Is there some sort of way I can use "items.length" or "items.size" or something similar? More importantly, WHERE IS THIS DOCUMENTED?

I have searched the Internet for decent documents on JSTL and cannot find a simple complete guide to tag usage -- something similar to what Struts has for its tags. For example, where is a document that explains what you can do with "var", "varStatus", "items", etc. on a c:forEach tag, and covers all the tags? The Sun web services tutorial does not do this, it only gives examples.

Thank you,
Erik



Erik Weber wrote:

Thanks again.
Erik

Kris Schneider wrote:

<c:forEach> supports a "varStatus" attribute. The value of that atrribute is a
String that names an instance of javax.servlet.jsp.jstl.core.LoopTagStatus. The
LoopTagStatus instance has nested visibility so that it's only available within
the enclosing <c:forEach> tag. LoopTagStatus exposes a number of properties,
but the one you're probably interested in is "index":


..
<c:forEach var="bean" varStatus="status" items="${entry.value}">
<%-- ${status.index} is the current index --%>
...
</c:forEach>
..

Quoting Erik Weber <[EMAIL PROTECTED]>:



How can I refer to the index of the current iteration with c:forEach (analogous to the indexId attribute to logic:iterate)?

Thanks,
Erik


Kris Schneider wrote:


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

<c:forEach var="entry" items="${map}">
<%-- ${entry.key} is the current key --%>
<%-- ${entry.value} is the associated bean array --%>
<c:forEach var="bean" items="${entry.value}">
...
</c:forEach>
</c:forEach>

Quoting Erik Weber <[EMAIL PROTECTED]>:




I could use some Struts-EL/JSTL tag help, please.

I have a Map with each entry having a String as the key and a bean array as the value.

I need two iterations, one nested inside the other.

For the outer iteration, I want to iterate the keySet of the Map. I don't know what the keys are going to be or how many there will be.

Within that iteration, for each key in the keySet, I need to iterate over the buckets of the array that is the value for that key.

To make this more clear, let's say I will produce a table of tables, somewhat like this:

<table>

<!-- start outer iteration here; iterate over the keySet of the Map -->

<!-- Map key #0 -->

<tr>

<td>

<table>

<!-- start inner iteration #1 here; iterate over the Object[] that

is

the value for key #1 in the Map -->

<!-- Object[bucket #0] -->

<tr>

<td><!-- Object[bucket #0].property A --></td>

<td><!-- Object[bucket #0].property B --></td>

</tr>

<!-- end Object[bucket #0] -->

<!-- Object[bucket #1] -->

<tr>

<td><!-- Object[bucket #1].property A --></td>

<td><!-- Object[bucket #1].property B --></td>

</tr>

<!-- end Object[bucket #1] -->

</table>

</td>

</tr>

<!-- end Map key #0 -->

<!-- Map key #1 -->

<tr>

<td>

<table>

<!-- start inner iteration #2 here; iterate over the Object[] that

is

the value for key #2 in the Map -->

<!-- Object[bucket #0] -->

<tr>

<td><!-- Object[bucket #0].property A --></td>

<td><!-- Object[bucket #0].property B --></td>

</tr>

<!-- end Object[bucket #0] -->

<!-- Object[bucket #1] -->

<tr>

<td><!-- Object[bucket #1].property A --></td>

<td><!-- Object[bucket #1].property B --></td>

</tr>

<!-- end Object[bucket #1] -->

</table>

</td>

</tr>

<!-- end Map key #1 -->

<!-- end outer iteration -->

</table>


Could someone show me some skeleton JSTL or Struts-el code?

I would appreciate it very much,
Erik





--------------------------------------------------------------------- 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