YOu can read this on struts-logic doc : Normally, each object exposed by the iterate tag is an element of the underlying collection you are iterating over. However, if you iterate over a Map, the exposed object is of type Map.Entry that has two properties:
key - The key under which this item is stored in the underlying Map. value - The value that corresponds to this key. So, you should use : logic:iterate name="objA" property="hTable" id="objB" indexId="ind" type="ObjB" > Next element is <bean:write name="objB" property="value.prop" /> [<bean:write name="value.ind"/>] </logic:iterate> Nico. > Thanks for your help Nico, > As you recommend I've checked into my ObjB class and the property "prop" > looks well formed : > > - "prop" is of type String > - there is only one getter (getProp() ) and one setter (setProp(String p) ) > - getProp() is public > > As I mentionned in my first append, I used two ways to code the > logic:iterate tag. > I can understand the first error message as there is no mention anywhere of > the type of "objB" (as "objB" is stored as an Object type in the > Hashtable). But I don't understand the second error message ("invalid Cast") > as I specify the type for "objB". > > > ----- Original Message ----- > From: "Nicolas De Loof" <[EMAIL PROTECTED]> > To: "Struts Users Mailing List" <[EMAIL PROTECTED]> > Sent: Thursday, March 27, 2003 11:27 > Subject: Re: Using JSP struts tag logic:iterate > > > > You don't need <jsp:useBean> as struts tags look into scope themself. > (usebean create a scriptlet variable from a bean) > > > > Your code looks fine. Look at objB code, getter should not be well formed. > > - be carreful about uppercase beginig properties > > - be carreful not to have mulitple setters with different data types > (IFAIK it will break javaBean PropertyInfo) > > - be carreful getter is public > > > > Nico. > > > > > > > > Hi, > > I'm a bit confusing using the jsp struts tag logic:iterate. > > Here is my problem. > > > > In my business logic I've created an object (let's call it "objA") that > contains a Hashtable which itself contain a list > > of objects ("objB") . The Hastable object ("hTable") can be accessed > through getter and setter from "objA". > > I want now to display as a table the property "prop" of all "objB" objects > contained in the Hashtable "hTable" ("prop" > > is a String and can be accessed through getter and setter from "objB". > > > > Before launching the jsp I've put objA in the HTTP request. > > > > Then I've coded the following in the Jsp : > > > > <jsp:useBean id="objA" class="ObjA" scope="request"></jsp:useBean> > > > > <logic:iterate name="objA" property="hTable" id="objB" indexId="ind" > > > Next element is <bean:write name="objB" property="prop" /> > [<bean:write name="ind"/>] > > </logic:iterate> > > > > Coding this, I get the following error : > > > > [Servlet Error]-[No getter method for property prop of bean objB]: > > > > > > I tried then to code : > > > > <jsp:useBean id="objA" class="ObjA" scope="request"></jsp:useBean> > > > > <logic:iterate name="objA" property="hTable" id="objB" indexId="ind" > type="ObjB" > > > Next element is <bean:write name="objB" property="prop" /> > [<bean:write name="ind"/>] > > </logic:iterate> > > > > In this case I get the following error : > > > > [Servlet Error]-[JSP 1.2 Processor]: java.lang.ClassCastException: > java.util.Hashtable$Entry > > > > Can anyone tell me what I am doing wrong please ? > > > > Thanks for your help > > > > Jean-Michel Auguste > > > > > > > > --------------------------------------------------------------------- > > 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]