Dude all you have to do is do something as simple as entering "ListUtils" in Google and you'll find out.
-Yves- On Mon, 13 Sep 2004 17:04:18 +1200, struts Dude <[EMAIL PROTECTED]> wrote: > Just a silly question. > > Where did ListUtils come from?? I can't find this > in my JDK1.4.2. > > Thanks > > > > > ----- Original Message ----- > From: "Hubert Rabago" <[EMAIL PROTECTED]> > To: "Struts Users Mailing List" <[EMAIL PROTECTED]> > Sent: Friday, September 03, 2004 7:40 AM > Subject: Re: Not happy with approaches.. looking for better/other > suggestions > > > Have you tried using ListUtils.lazyList() for this? I just tried it > > on a sample app and it works in cases like this. > > > > - Hubert > > > > On Thu, 02 Sep 2004 14:27:32 -0400, Rick Reumann <[EMAIL PROTECTED]> > wrote: > > > One of the most frustrating things I run into when developing Struts > > > applications is the problem of when you want to use a request scoped > > > ActionForm but you need to populate a collection that is one of your > > > ActionForm properties. The problem is the classic index out of bounds > > > exception if you do not have your collection populated with enough > objects. > > > > > > For example imagine the case where you might want to edit a bunch of > > > Access definitions on one form. > > > > > > So in an ActionForm property you have: > > > > > > Collection accessDefinitions; > > > > > > In your Action before you get to the form you populate your form: > > > > > > ((AccessForm)form).setAccessDefinitions( aCollectionOfDefs ); > > > > > > Your JSP then displays the access definition properties for the user to > > > edit: > > > > > > (condensed and table formatting removed:) > > > > > > <c:forEach items="${accessForm.accessDefinitions}" var="access" > > > varStatus="status"> > > > <html:text property="accessDefinitions[${status.index}].name"/> > > > <html:text property="accessDefinitions[${status.index}].description"/> > > > </c:forEach> > > > > > > Now the problem will be when you submit this form. If this form was > > > given request scope in the action mapping, you'll end up with errors > > > since BeanUtils can not populate the Collection. You need to have the > > > correct size in place for 'accessDefinitions' to allow for population. > > > > > > There are several solutions that have been proposed by searching the > > > list archives. > > > > > > The easiest alternative is of course to just put your form in Session > > > scope, but that is such a waste in my opinion. > > > > > > Another approach would be something like: > > > > > > In reset() of ActionForm: > > > > > > public void reset(ActionMapping actionMapping, HttpServletRequest > request) { > > > if ( request.getParameter("accessDefinitionsSize") != null ) { > > > int accessDefinitionsSize = new > > > Integer(request.getParameter("accessDefinitionsSize")).intValue(); > > > accessDefinitions = new ArrayList(accessDefinitionsSize); > > > for (int i=0;i<accessDefinitionsSize;i++) { > > > accessDefinitions.add(new AccessDefinitionVO()); > > > } > > > } > > > } > > > > > > Then in your JSP (code snipped just showing releveant portion): > > > > > > <c:forEach items="${accessForm.accessDefinitions}" var="access" > > > varStatus="status"> > > > .... > > > <c:set var="accessDefinitionsSize" value="${status.count}"/> > > > </c:forEach> > > > <input type="hidden" name="accessDefinitionsSize" > > > value="${accessDefinitionsSize}"/> > > > > > > The above works 'ok' but it's so much extra code. I've thought of just > > > adding the accessDefinitionsSize attribute to the Session in the Action > > > that is called right be the form is set up. Then the reset method can > > > pull it right from there. An int in the session won't be too much > > > overhead. But I'm not sure if I like that approach that much either > > > (although I'm leaning towards just doing it that way). > > > > > > Of course I don't like the approaches that call a business class from > > > the reset to get the size. > > > > > > Any suggestions welcome. > > > > > > -- > > > Rick > > > > > > --------------------------------------------------------------------- > > > 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] > > -- For me to poop on! http://www.formetopoopon.com http://www.nbc.com/nbc/Late_Night_with_Conan_O'Brien/video/triumph.shtml --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]