struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shamdasani Nimmi-ANS004 <>
Subject RE: Question about iterate tag
Date Thu, 01 Mar 2001 23:13:52 GMT

I have wasted so much time trying to get this to work and all that was missing in my JSP was
this line:

<%@ taglib uri="/Web-inf/struts-logic.tld" prefix="logic" %>

The strange part is that I was not getting any error in the log files saying undefined tag
or anything. 

I appreciate all the help I received :)


-----Original Message-----
From: Shamdasani Nimmi-ANS004 []
Sent: Thursday, March 01, 2001 11:04 AM
To: ''
Subject: RE: Question about iterate tag


I did try this way but it still does not work. Since supplier.value is of type SupplierBean,
do I have to specify that anywhere?
<jsp:useBean id="user" scope="session" type="com.motorola.mms.msqc.beans.UserBean"/>


<logic:iterate id="supplier" name="user" property="suppliers" >

<TD><bean:write name="supplier" property="value.seq_nbr" scope="page"/></TD>
<TD><bean:write name="supplier" property="" scope="page"/></TD>
<TD><bean:write name="supplier" property="value.countryName" scope="page"/></TD>


but this code which I am trying to replace with tags works:

<jsp:useBean id="user" scope="session" type="com.motorola.mms.msqc.beans.UserBean"/>

	Hashtable hashTable = (Hashtable) user.getSuppliers();
	for (Enumeration e = hashTable.elements(); e.hasMoreElements(); ) 
	   SupplierBean supplier = (SupplierBean) e.nextElement();
<TD><FONT face = "Arial">supplier.getCode() %></FONT></TD>
<TD><FONT face = "Arial"><%= supplier.getName() %></FONT></TD></FONT></TD>
<TD><FONT face = "Arial"><%= supplier.getCountryName() %></FONT></TD>

<% } %>

-----Original Message-----
From: Craig R. McClanahan []
Sent: Wednesday, February 28, 2001 11:30 PM
Subject: Re: Question about iterate tag

Shamdasani Nimmi-ANS004 wrote:

> Hi,
> Could someone please tell me what I am doing wrong below:
> user is a bean in session scope in my JSP and its getSuppliers() method returns a hashtable
where keys are Suppliers Ids and elements are Supplier beans.
> <logic:iterate collection="<%= user.getSuppliers() %>" id="supplier" type="com.motorola.mms.msqc.beans.SupplierBean">
> <TR>
> <TD><bean:write name="supplier" property="seq_nbr" scope="page" /></TD>
> <TD><bean:write name="supplier" property="name" scope="page" /></TD>
> <TD><bean:write name="supplier" property="country_name" scope="page" /></TD>
> </TR>
> </logic:iterate>

When you iterate over a Hashtable (or any other implementation of the Map interface), the
object get for the "id" variable is actually an implementation of
the "Map.Entry" class, not the class of the value of the bean.  From this "Map.Entry" instance,
however, you can easily get to the real information:

    <bean:write name="supplier" property="value.seq_nbr" scope="page"/>

This works because a MapEntry has two properties -- key and value -- so we are using the nested
property syntax to effectively call getValue().getSeq_nbr().

> Thanks in advance.
> -Nimmi


View raw message