Hi Matk, 

I have the following statement

<tiles:importAttribute /> 

Which I "think" am lead to believe it imports all the attributes into the
page scope. 

In an effort to figure out what was happening I downloaded the jstl 1.0.6
and built a debug project in eclipse so I could step into the ForEach tag
and I am not sure what I am really looking at yet in there but it appears
that indeed the item does contain a string and that the items collection on 
the tag has a "somewhat" string delimited representation of the collection. 

See below: This is that actual value in the string in the debugger... Is
this how it is stored then is ir "reconstituted" into SimpleMenuItem(s) as
the tag loops. The string "looks" like a collection because of the "," i.e.
it looks like a string tokenizer.

[SimpleMenuItem[value=nav.adminhome,
link=/aems/session/changefiltertoken.do?btnResetFilter=true,
tooltip=impersonationItem, ], SimpleMenuItem[value=nav.account,
link=/aems/party/persondetail.do, ], SimpleMenuItem[value=nav.organization,
link=/aems/party/organizationdetail.do, ], SimpleMenuItem[value=nav.library,
link=/aems/file/filelibrarylist.do, ], SimpleMenuItem[value=nav.addressbook,
link=/aems/communication/personsearchlist.do, ],
SimpleMenuItem[value=nav.help, link=#, tooltip=help, ],
SimpleMenuItem[value=nav.logout, link=/aems/logout.do, ]]

And give this sting in the items - the actual when call to next() within the
EnumeratonAdapter way in the ForEachSupport class actuall calls the
StringTokenizer and returns an item of:

[SimpleMenuItem[value=nav.adminhome

So it looks like it went to the first ","  and thus the subject of my email
might really be changed to: "What is causing ForEach to read/load my tiles
putlist collection as a string and not as a collection of the
SimpleMenuItems they really are"? Pretty darn long subject :> 


On a side note - not sure if this means anything - when I compiled the
course I was required by eclipse to add two new methods to the
PageContextImpl in the org.apache.taglibs.standard.lang.jstl.test package
does it looks like perhaps the different JSP version might be an issue. i.e.
will jstl 1.0.6 work in Tomcat 5.0.28? 


/* (non-Javadoc)
 * @see javax.servlet.jsp.JspContext#getExpressionEvaluator()
 */
public ExpressionEvaluator getExpressionEvaluator() {
        // TODO Auto-generated method stub
        return null;
}

/* (non-Javadoc)
 * @see javax.servlet.jsp.JspContext#getVariableResolver()
 */
public VariableResolver getVariableResolver() {
        // TODO Auto-generated method stub
        return null;
}


Thanks,
Jerry 




-----Original Message-----
From: Mark Lowe [mailto:[EMAIL PROTECTED] 
Sent: Friday, December 03, 2004 2:49 AM
To: Struts Users Mailing List
Subject: Re: JSTL, Tiles PutList and Tomcat 5.028

Have you done this in the jsp?

<tiles:useAttribute name="topnav" scope="page" />

MArk

On Thu, 2 Dec 2004 12:39:01 -0700, Jim Barrows <[EMAIL PROTECTED]> wrote:
> 
> 
> 
> 
> > -----Original Message-----
> > From: Jerry Rodgers [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, December 02, 2004 12:11 PM
> > To: [EMAIL PROTECTED]
> > Subject: JSTL, Tiles PutList and Tomcat 5.028
> >
> >
> > Hi All,
> >
> >
> >
> > I have a jsp page that I am trying to run on Tomcat that
> > currently works in
> > Weblogic. It appears the primary problem is that the forEach
> > tag is not
> > putting the variable menuItem into the pageContext attributes
> > and or it
> > thinks the menuItem is of type String. I am not sure where my actually
> > problem is (tiles, tomcat etc).
> >
> >
> >
> >
> >
> > It appears Tomcat is generating code when compiling the JSP
> > that isn't aware
> > of the type of class the
> > org.apache.struts.tiles.beans.SimpleMenuItem is -
> > it looks like at run time it thinks it is a String.
> >
> >
> >
> >
> >
> > A snippet of my JSP looks like this (jstl tags - partial):
> >
> > <core:forEach var="menuItem" varStatus="status" items="${topnav}">
> >
> > <core:choose>
> >
> >  <core:when test="${menuItem.tooltip=='help'}">
> 
> I do something similar in my code, and it works.
> It does look like it's not figuring out what type the menuItem is
though....
> 
> <snip/>
> 
> 
> 
> >
> > When I check the pageContext attributes via a debugger I
> > actually see an
> > item in the collection with the key "topnav" and it contains
> > a Vector of
> > items that appear to be of type SimpleMenuItem. However I
> > never see the item
> > called menuItem that I thought the forEach tag would place in
> > there for me.
> 
> And I think the tutorial is agreeing with you:
> The forEach tag allows you to iterate over a collection of objects. You
specify the collection via the items attribute, and the current item is
available through a scope variable named by the item attribute.
> 
> A large number of collection types are supported by forEach, including all
implementations of java.util.Collection and java.util.Map. If the items
attribute is of type java.util.Map, then the current item will be of type
java.util.Map.Entry, which has the following properties:
> 
>     * key - the key under which the item is stored in the underlying Map
>     * value - the value that corresponds to the key
> 
> Arrays of objects as well as arrays of primitive types (for example, int)
are also supported. For arrays of primitive types, the current item for the
iteration is automatically wrapped with its standard wrapper class (for
example, Integer for int, Float for float, and so on).
> 
> Implementations of java.util.Iterator and java.util.Enumeration are
supported but these must be used with caution. Iterator and Enumeration
objects are not resettable so they should not be used within more than one
iteration tag. Finally, java.lang.String objects can be iterated over if the
string contains a list of comma separated values (for example:
Monday,Tuesday,Wednesday,Thursday,Friday).
> 
> Here's the shopping cart iteration from the previous section with the
forEach tag:
> 
> <c:forEach var="item" items="${sessionScope.cart.items}">
>   ...
>   <tr>
>     <td align="right" bgcolor="#ffffff">
>     ${item.quantity}
>   </td>
>   ...
> </c:forEach>
> 
> The forTokens tag is used to iterate over a collection of tokens separated
by a delimiter.
> from http://java.sun.com/webservices/docs/1.3/tutorial/doc/index.html
> 
> >
> >
> >
> > Thanks for any help you may be able to provide,
> >
> >
> >
> > Jerry Rodgers
> >
> >
> >
> >
> >
> >
> >
> >
> 
> ---------------------------------------------------------------------
> 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