RE: Indexed Properties and Population

2003-01-17 Thread Raible, Matt
Here's how I did it:

On my Form:

public ArrayList getKids() {
returns kids;
}

public void setKids(ArrayList kids) {
this.kids = kids;
}

public int getKidsSize() {
return kids.size();
}

In my JSP:


...

...



On my form (relevant for saving)

public void reset(ActionMapping mapping, HttpServletRequest request) {
// make the kids ArrayList the proper size and populate with
// empty objects
int kidsSize = Integer.parseInt(request.getParameter("kidsSize"));
kids = new ArrayList(kidsSize);
for (int i=0; i < kidsSize; i++) {
kids.add(new KidForm());
}
}

This seems to work great for me.  Any other suggestions/methods are
encouraged ;)  Is it lunchtime (beertime) yet?

HTH,

Matt

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Friday, January 17, 2003 6:52 AM
To: Struts Users Mailing List
Subject: Re: Indexed Properties and Population



David says:
"One implementation that should work based on your example
as long as you are willing to create a child factory is in the commons
collection package and is ListUtils.lazyList, which takes a List and
factory."

I have used this as well, in combination with the nested tag library.
We have  a page that displays and updates a List of Value Objects where
each have two internal Lists of Value Objects.
The structure of value objects are sent to me from the back end as such:

CustomerList
  CustomerVo 1
creditVo1   invoiceVo1
creditVo2   invoiceVo2
.   .

  CustomerVo2
creditVo1   invoiceVo1
creditVo2   invoiceVo2
.   .


I would be curious to know  this would done without the nested tags and
lazy list.








"David Morris" <[EMAIL PROTECTED]> on 01/16/2003 03:50:10 PM

Please respond to "Struts Users Mailing List"
   <[EMAIL PROTECTED]>

To:    <[EMAIL PROTECTED]>
cc:

Subject:Re: Indexed Properties and Population


Matt,

You really don't need to know how many there are, just create them
on demand. You can intercept gets and auto-extend the underlying
Collection. One implementation that should work based on your example
as long as you are willing to create a child factory is in the commons

collection package and is ListUtils.lazyList, which takes a List and
factory.

David Morris

>>> [EMAIL PROTECTED] 01/16/03 02:31PM >>>
I have an ArrayList on a form... let's call the form Parent and the
ArrayList Children.

If I have:

private ArrayList children;

public void setChildren(int index, ChildForm childForm) {
 this.children.set(index, childForm);
}

Then saving my form results in a NPE for BeanUtils.copyProperties.  If
I
create a whole bunch of objects in the ArrayList in the constructor -
I
avoid this problem:

public ParentForm () {
children = new ArrayList(100);
for (int i=0; i < 100; i++) {
children.add(new ChildForm());
}

But I'm guessing that this fits better into the reset(mapping,
request)
method of my form.  My question is - how do I determine how many there
are?
Is there something in the request this this information - or should I
set a
hidden field with the number of children?

Thanks,

Matt

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








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


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




Re: Indexed Properties and Population

2003-01-17 Thread Jeff_Mychasiw

David says:
"One implementation that should work based on your example
as long as you are willing to create a child factory is in the commons
collection package and is ListUtils.lazyList, which takes a List and
factory."

I have used this as well, in combination with the nested tag library.
We have  a page that displays and updates a List of Value Objects where
each have two internal Lists of Value Objects.
The structure of value objects are sent to me from the back end as such:

CustomerList
  CustomerVo 1
creditVo1   invoiceVo1
creditVo2   invoiceVo2
.   .

  CustomerVo2
creditVo1   invoiceVo1
creditVo2   invoiceVo2
.   .


I would be curious to know  this would done without the nested tags and
lazy list.








"David Morris" <[EMAIL PROTECTED]> on 01/16/2003 03:50:10 PM

Please respond to "Struts Users Mailing List"
   <[EMAIL PROTECTED]>

To:    <[EMAIL PROTECTED]>
cc:

Subject:Re: Indexed Properties and Population


Matt,

You really don't need to know how many there are, just create them
on demand. You can intercept gets and auto-extend the underlying
Collection. One implementation that should work based on your example
as long as you are willing to create a child factory is in the commons

collection package and is ListUtils.lazyList, which takes a List and
factory.

David Morris

>>> [EMAIL PROTECTED] 01/16/03 02:31PM >>>
I have an ArrayList on a form... let's call the form Parent and the
ArrayList Children.

If I have:

private ArrayList children;

public void setChildren(int index, ChildForm childForm) {
 this.children.set(index, childForm);
}

Then saving my form results in a NPE for BeanUtils.copyProperties.  If
I
create a whole bunch of objects in the ArrayList in the constructor -
I
avoid this problem:

public ParentForm () {
children = new ArrayList(100);
for (int i=0; i < 100; i++) {
children.add(new ChildForm());
}

But I'm guessing that this fits better into the reset(mapping,
request)
method of my form.  My question is - how do I determine how many there
are?
Is there something in the request this this information - or should I
set a
hidden field with the number of children?

Thanks,

Matt

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








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




RE: Indexed Properties and Population

2003-01-16 Thread Raible, Matt
I think what I'll do is to create a new method called getChildrenSize() that
does what Mark suggests below - then I'll put this as a hidden field on my
form.  Since all my form's contents are dumped into a JSP (and gone), I've
lost the size of the children - unless I save it as a hidden field, or count
them in my  tag.  So then in my reset method on the form, I
can create x number of children and do set(index, form).

Thanks,

Matt

-Original Message-
From: Mark Galbreath [mailto:[EMAIL PROTECTED]]
Sent: Thursday, January 16, 2003 2:57 PM
To: 'Struts Users Mailing List'
Subject: RE: Indexed Properties and Population


int elements = children.size()
?

Where are you defining this method?


-Original Message-
From: Raible, Matt [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, January 16, 2003 4:31 PM

If I have:

private ArrayList children;

public void setChildren(int index, ChildForm childForm) {
this.children.set(index, childForm);
}

My question is - how do I determine how many there are? Is there something
in the request this this information - or should I set a hidden field with
the number of children?



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


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




Re: Indexed Properties and Population

2003-01-16 Thread Kris Schneider
Just make sure you've got a way to cap the max number you auto-create...

Quoting David Morris <[EMAIL PROTECTED]>:

> Matt,
> 
> You really don't need to know how many there are, just create them 
> on demand. You can intercept gets and auto-extend the underlying 
> Collection. One implementation that should work based on your example 
> as long as you are willing to create a child factory is in the commons
> 
> collection package and is ListUtils.lazyList, which takes a List and
> factory. 
> 
> David Morris
> 
> >>> [EMAIL PROTECTED] 01/16/03 02:31PM >>>
> I have an ArrayList on a form... let's call the form Parent and the
> ArrayList Children.
> 
> If I have:
> 
> private ArrayList children;
> 
> public void setChildren(int index, ChildForm childForm) {
>   this.children.set(index, childForm);
> }
> 
> Then saving my form results in a NPE for BeanUtils.copyProperties.  If
> I
> create a whole bunch of objects in the ArrayList in the constructor -
> I
> avoid this problem:
> 
> public ParentForm () {
> children = new ArrayList(100);
> for (int i=0; i < 100; i++) {
> children.add(new ChildForm());
> }
> 
> But I'm guessing that this fits better into the reset(mapping,
> request)
> method of my form.  My question is - how do I determine how many there
> are?
> Is there something in the request this this information - or should I
> set a
> hidden field with the number of children?
> 
> Thanks,
> 
> Matt
> 
> --
> To unsubscribe, e-mail:  
> 
> For additional commands, e-mail:
> 
> 


-- 
Kris Schneider 
D.O.Tech   

--
To unsubscribe, e-mail:   
For additional commands, e-mail: 




RE: Indexed Properties and Population

2003-01-16 Thread Mark Galbreath
int elements = children.size()
?

Where are you defining this method?


-Original Message-
From: Raible, Matt [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, January 16, 2003 4:31 PM

If I have:

private ArrayList children;

public void setChildren(int index, ChildForm childForm) {
this.children.set(index, childForm);
}

My question is - how do I determine how many there are? Is there something
in the request this this information - or should I set a hidden field with
the number of children?



--
To unsubscribe, e-mail:   
For additional commands, e-mail: 




Re: Indexed Properties and Population

2003-01-16 Thread David Morris
Matt,

You really don't need to know how many there are, just create them 
on demand. You can intercept gets and auto-extend the underlying 
Collection. One implementation that should work based on your example 
as long as you are willing to create a child factory is in the commons

collection package and is ListUtils.lazyList, which takes a List and
factory. 

David Morris

>>> [EMAIL PROTECTED] 01/16/03 02:31PM >>>
I have an ArrayList on a form... let's call the form Parent and the
ArrayList Children.

If I have:

private ArrayList children;

public void setChildren(int index, ChildForm childForm) {
this.children.set(index, childForm);
}

Then saving my form results in a NPE for BeanUtils.copyProperties.  If
I
create a whole bunch of objects in the ArrayList in the constructor -
I
avoid this problem:

public ParentForm () {
children = new ArrayList(100);
for (int i=0; i < 100; i++) {
children.add(new ChildForm());
}

But I'm guessing that this fits better into the reset(mapping,
request)
method of my form.  My question is - how do I determine how many there
are?
Is there something in the request this this information - or should I
set a
hidden field with the number of children?

Thanks,

Matt

--
To unsubscribe, e-mail:   
For additional commands, e-mail: 




Indexed Properties and Population

2003-01-16 Thread Raible, Matt
I have an ArrayList on a form... let's call the form Parent and the
ArrayList Children.

If I have:

private ArrayList children;

public void setChildren(int index, ChildForm childForm) {
this.children.set(index, childForm);
}

Then saving my form results in a NPE for BeanUtils.copyProperties.  If I
create a whole bunch of objects in the ArrayList in the constructor - I
avoid this problem:

public ParentForm () {
children = new ArrayList(100);
for (int i=0; i < 100; i++) {
children.add(new ChildForm());
}

But I'm guessing that this fits better into the reset(mapping, request)
method of my form.  My question is - how do I determine how many there are?
Is there something in the request this this information - or should I set a
hidden field with the number of children?

Thanks,

Matt


--
To unsubscribe, e-mail:   
For additional commands, e-mail: