You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Webb, Ed" <Ed...@news.xtremeinformation.com> on 2003/11/19 15:09:52 UTC

RE: Using a collection of Beans within an ActionForm [Solved]

Thanks very much, that was just the nudge in the right direction. I found
the http://jakarta.apache.org/struts/faqs/indexedprops.html page very
helpful. As I am using EL and the JSTL tags I found that creating a method:

public List getMedia(int index) { ... }

as that page suggested ("List-backed Indexed Properties") caused the
<c:forEach> tag to complain it couldn't find a getter for property media so
I had to create 2 methods:

public List getMedia() { 
	return media;
} 

public MediaBean getMedium(int index) {
     while(index >= media.size()) {
          media.add(new MediaBean())
     }
     return (MediaBean)media.get(index);
}

and use this in the JSP:

<c:forEach varStatus="status" var="med" items="${emailalertForm.media}">
	<tr>
		<td><fmt:message key="${med.mediaName}" /></td>
		<td><html:checkbox
property="medium[${status.index}].selected" /></td>	</tr>
</c:forEach>

to get everything to display and return correctly.

Cheers,

Ed!

-----Original Message-----
From: Nicholas L Mohler [mailto:Nicholas_L_Mohler@raytheon.com]
Sent: 19 November 2003 12:45
To: Struts Users Mailing List
Subject: Re: Using a collection of Beans within an ActionForm

Ed,

You can find examples of this by searching the archive for indexed
properties.  

[snip]

There are a few ways to do this.  My getter method:

public CollectionBean getCollectionName(int index) {
     while(index >= collectionName.size()) {
          collectionName.add(new CollectionBean())
     }
     return (CollectionBean)collectionName.get(index);
}