I haven't used maps with <html:optionsCollection> so I don't know if I can give you a definite answer on this.

The optionsCollection tag is expecting a collection of objects that it can call .getLabel() and .getValue() on (by default but it can be changed with parameters). To get a list of objects from a map you normally call object.entrySet which you can then iterate over. The entry set is a set of Map.Entry objects (they have getKey and getValue methods).

So it looks like the tag is trying to do a .getLabel() on the Map.Entry object. If the tag does accept maps I would have expected that it knows about Map.Entry objects.

I normally use List objects with pull-downs instead, like this:

List eventGroups = new ArrayList();
eventGroups.add(new LabelValueBean("Label 1","Value 1"));
eventGroups.add(new LabelValueBean("Label 2","Value 2"));
eventGroups.add(new LabelValueBean("Label 3","Value 3"));
((EventGroupBean)form).setEventGroups( eventGroups );



Lars Bergström wrote:

Dear Struts users,

I am trying to get my html:optionsCollection to work with a TreeMap. I
don't
know if this is possible but on the Struts API page for the class
OptionsCollectionTag I read the following:

"The collection may be an array of objects, a Collection, an
Enumeration, an
Iterator, or a Map."
(
http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/Opti
onsCollectionTag.html)


Since TreeMap implements SortedMap which is a subinterface of Map, TreeMap should work fine, right?

However, when the page is loaded I get the folloing error text:
"HTTP ERROR: 500 No getter method available for property label for bean
under
name 1=LabelValueBean[Label 1, Value 1]"

Can anyone explain this error message? This seems strange to me.

The returntype in my ActionFormBean is TreeMap and the code snippet
where I
build up the TreeMap is like this:

eventGroups = new TreeMap();
eventGroups.put( new String( "1" ),
                 new LabelValueBean( "Label 1",
                                     "Value 1" ) );
eventGroups.put( new String( "2" ),
                 new LabelValueBean( "Label 2",
                                     "Value 2" ) );
eventGroups.put( new String( "3" ),
                 new LabelValueBean( "Label 3",
                                     "Value 3" ) );
((EventGroupBean)form).setEventGroups( eventGroups );
(


Best regards


Lasse


--
Jason Lea


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



Reply via email to