RE: getting data from form with nested beans
hi everybody! great flamewar ;>) thanks to everybody involved! i really appreciate your help! you enlightened my greyish days! cheers martin -- Urspruengliche Nachricht -- Von: "Arron Bates" <[EMAIL PROTECTED]> Antworten an: "Struts Users Mailing List" <[EMAIL PROTECTED]> Datum: Wed, 21 Jan 2004 04:11:40 +1000 >Never thought I'd see a flamewar on nested beans. :) > >Request scope beans in lists are very much possible with the help of "Lazy" >collections... > >http://marc.theaimsgroup.com/?l=struts-user&m=105027737732711&w=2 > >...it's the entire reason the lazy collections were made. Some people just >can't live with computer memory filling up with session objects. > >The lazy solution keeps Struts happy by allowing an empty list to recieve >updates on indexes not there yet (which is what happens when the form object >is created for the first time when the request comes in). > >That said, nothing in life comes free. Nested beans in request scope is one >degree harder to code for than form beans in the session. If a site has >limited concurrent users (intranetty, etc etc), I vote to put the form in the >session every time. :)...but the other way is more than possible. > > >Cheers. > >Arron. > > > >> I did not get your question clearly. >> >> When a new form(instance of ActionForm) is created, users input is >> not lost.The users input is still in the request Object.(Are you >> confusing the Form on screen with the ActionFOrm object on server >> side?).So after the instance of ActionForm is created, it is >> populated with the parameters from the request using the struts auto- >> population mechanism.And then you can use the same BeanList to pass >> to the Service layer(But after conversion may be as all the >> properties in String format.SO create DTO bean from correspondign >> stringbeans). >> >> Hope this helps. >> regards, >> Shirish >> >> -Original Message- >> From: Martin Sturzenegger [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, January 20, 2004 3:11 PM >> To: [EMAIL PROTECTED]; Struts Users Mailing List >> Subject: RE: getting data from form with nested beans >> >> hi shirish, >> great conceipt and many thanks for example and explanation, my fog >> seems to thin out slowly. one question remains: as soon as a new >> form is created, then, i assume, the user's inputs are lost. so how >> do you get hold of the user's input? usually one feeds the input >> data back into a database. with simple beans i copy the formdata to >> a new instantiated dto-bean within my action class and pass the dto- >> bean to my business-layer. but dealing with nested beans, where and how? >> sorry for pestering >> and thanks a lot in advance >> martin >> >> -- Urspruengliche Nachricht -- >> Von: <[EMAIL PROTECTED]> >> Antworten an: "Struts Users Mailing List" <[EMAIL PROTECTED]> >> Datum: Tue, 20 Jan 2004 13:54:30 +0100 >> >> >yes:-)) >> >And I am sure most of the people do have the same.I mean tieing the nested >properties to the session scope does take away a lot of flexibility. >> > >> >Anyhow just try my sample code...It should demonstrate the concept. >> > >> >regards, >> >Shirish >> > >> >-Original Message- >> >From: Mark Lowe [mailto:[EMAIL PROTECTED] >> >Sent: Tuesday, January 20, 2004 1:44 PM >> >To: Struts Users Mailing List >> >Subject: Re: getting data from form with nested beans >> > >> > >> >So you've had forms, with indexed properties with dynamic sizes working >> >when scoping to request? >> > >> > >> >On 20 Jan 2004, at 11:45, <[EMAIL PROTECTED]> wrote: >> > >> >> Hi, >> >> Is it flaming or what?I thought we were trying to solve each others >> >> problems.Still a last try. >> >> We have a complete application(3 modules/4000 classes/15 companies >> >> live as of date) which uses all form beans just in request scope.And >> >> all over the place we have used form beans in request scope.And the >> >> application is well and running. >> >> >> >> If you go t through my mail, you will understand why it will mail.SO >> >> please read the mail carefully. >> >> I will try to explain it again. >> >> >> >> When the form
RE: getting data from form with nested beans
Never thought I'd see a flamewar on nested beans. :) Request scope beans in lists are very much possible with the help of "Lazy" collections... http://marc.theaimsgroup.com/?l=struts-user&m=105027737732711&w=2 ...it's the entire reason the lazy collections were made. Some people just can't live with computer memory filling up with session objects. The lazy solution keeps Struts happy by allowing an empty list to recieve updates on indexes not there yet (which is what happens when the form object is created for the first time when the request comes in). That said, nothing in life comes free. Nested beans in request scope is one degree harder to code for than form beans in the session. If a site has limited concurrent users (intranetty, etc etc), I vote to put the form in the session every time. :)...but the other way is more than possible. Cheers. Arron. > I did not get your question clearly. > > When a new form(instance of ActionForm) is created, users input is > not lost.The users input is still in the request Object.(Are you > confusing the Form on screen with the ActionFOrm object on server > side?).So after the instance of ActionForm is created, it is > populated with the parameters from the request using the struts auto- > population mechanism.And then you can use the same BeanList to pass > to the Service layer(But after conversion may be as all the > properties in String format.SO create DTO bean from correspondign > stringbeans). > > Hope this helps. > regards, > Shirish > > -Original Message- > From: Martin Sturzenegger [mailto:[EMAIL PROTECTED] > Sent: Tuesday, January 20, 2004 3:11 PM > To: [EMAIL PROTECTED]; Struts Users Mailing List > Subject: RE: getting data from form with nested beans > > hi shirish, > great conceipt and many thanks for example and explanation, my fog > seems to thin out slowly. one question remains: as soon as a new > form is created, then, i assume, the user's inputs are lost. so how > do you get hold of the user's input? usually one feeds the input > data back into a database. with simple beans i copy the formdata to > a new instantiated dto-bean within my action class and pass the dto- > bean to my business-layer. but dealing with nested beans, where and how? > sorry for pestering > and thanks a lot in advance > martin > > -- Urspruengliche Nachricht -- > Von: <[EMAIL PROTECTED]> > Antworten an: "Struts Users Mailing List" <[EMAIL PROTECTED]> > Datum: Tue, 20 Jan 2004 13:54:30 +0100 > > >yes:-)) > >And I am sure most of the people do have the same.I mean tieing the nested properties to the session scope does take away a lot of flexibility. > > > >Anyhow just try my sample code...It should demonstrate the concept. > > > >regards, > >Shirish > > > >-Original Message- > >From: Mark Lowe [mailto:[EMAIL PROTECTED] > >Sent: Tuesday, January 20, 2004 1:44 PM > >To: Struts Users Mailing List > >Subject: Re: getting data from form with nested beans > > > > > >So you've had forms, with indexed properties with dynamic sizes working > >when scoping to request? > > > > > >On 20 Jan 2004, at 11:45, <[EMAIL PROTECTED]> wrote: > > > >> Hi, > >> Is it flaming or what?I thought we were trying to solve each others > >> problems.Still a last try. > >> We have a complete application(3 modules/4000 classes/15 companies > >> live as of date) which uses all form beans just in request scope.And > >> all over the place we have used form beans in request scope.And the > >> application is well and running. > >> > >> If you go t through my mail, you will understand why it will mail.SO > >> please read the mail carefully. > >> I will try to explain it again. > >> > >> When the form is submitted(the user presses submit button on > >> screen),the corresponding action will be called by struts.At the same > >> time, it will look for a actionForm from the mapping.As the scope is > >> specified as request, a new form will be created.And if you have > >> looked at my example carefully, you will see that the nested bean list > >> is created when the form is created.But this nested list is empty.Now > >> when struts autopopulation tries to populate a nested bean, it should > >> find that the nested bean list is empty.But the lazy initialization > >> mechanism in the indexed getter will take care that the list has > >> enough of beans.See the code below. > >> **
RE: getting data from form with nested beans
I did not get your question clearly. When a new form(instance of ActionForm) is created, users input is not lost.The users input is still in the request Object.(Are you confusing the Form on screen with the ActionFOrm object on server side?).So after the instance of ActionForm is created, it is populated with the parameters from the request using the struts auto-population mechanism.And then you can use the same BeanList to pass to the Service layer(But after conversion may be as all the properties in String format.SO create DTO bean from correspondign stringbeans). Hope this helps. regards, Shirish -Original Message- From: Martin Sturzenegger [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 20, 2004 3:11 PM To: [EMAIL PROTECTED]; Struts Users Mailing List Subject: RE: getting data from form with nested beans hi shirish, great conceipt and many thanks for example and explanation, my fog seems to thin out slowly. one question remains: as soon as a new form is created, then, i assume, the user's inputs are lost. so how do you get hold of the user's input? usually one feeds the input data back into a database. with simple beans i copy the formdata to a new instantiated dto-bean within my action class and pass the dto-bean to my business-layer. but dealing with nested beans, where and how? sorry for pestering and thanks a lot in advance martin -- Urspruengliche Nachricht -- Von: <[EMAIL PROTECTED]> Antworten an: "Struts Users Mailing List" <[EMAIL PROTECTED]> Datum: Tue, 20 Jan 2004 13:54:30 +0100 >yes:-)) >And I am sure most of the people do have the same.I mean tieing the nested properties >to the session scope does take away a lot of flexibility. > >Anyhow just try my sample code...It should demonstrate the concept. > >regards, >Shirish > >-Original Message- >From: Mark Lowe [mailto:[EMAIL PROTECTED] >Sent: Tuesday, January 20, 2004 1:44 PM >To: Struts Users Mailing List >Subject: Re: getting data from form with nested beans > > >So you've had forms, with indexed properties with dynamic sizes working >when scoping to request? > > >On 20 Jan 2004, at 11:45, <[EMAIL PROTECTED]> wrote: > >> Hi, >> Is it flaming or what?I thought we were trying to solve each others >> problems.Still a last try. >> We have a complete application(3 modules/4000 classes/15 companies >> live as of date) which uses all form beans just in request scope.And >> all over the place we have used form beans in request scope.And the >> application is well and running. >> >> If you go t through my mail, you will understand why it will mail.SO >> please read the mail carefully. >> I will try to explain it again. >> >> When the form is submitted(the user presses submit button on >> screen),the corresponding action will be called by struts.At the same >> time, it will look for a actionForm from the mapping.As the scope is >> specified as request, a new form will be created.And if you have >> looked at my example carefully, you will see that the nested bean list >> is created when the form is created.But this nested list is empty.Now >> when struts autopopulation tries to populate a nested bean, it should >> find that the nested bean list is empty.But the lazy initialization >> mechanism in the indexed getter will take care that the list has >> enough of beans.See the code below. >> 33 >> //give indexed access to the beans >>>>> >>>>> public Employee getEmployee(int index){ >>>>> >>>>> //very imp >>>>> >>>>> //when a jsp is submited , then while auto populating the form,this >>>>> will >>>>> ensure >>>>> that >>>>> >>>>> // the form is populated properly. >>>>> >>>>> while(index >= beanList.size()){ >>>>> >>>>> beanList.add(new Employee()); >>>>> >>>>> } >> *************** >> >> And as explained in jsp part, as long as the property references are >> created properly, this will work.And with struts1.1 nested tags, you >> don't have to even use the script<%%> to create property is jsp. >> >> Hope this clarifies it.If not, try to run my example code. >> >> regards, >> Shirish >> >> -Original Message- >> From: Mark Lowe [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, January 20, 2004 12:28 PM >> To: Struts Users Mailing List >> Subject: Re: getting data from form with nested beans >
RE: getting data from form with nested beans
hi shirish, great conceipt and many thanks for example and explanation, my fog seems to thin out slowly. one question remains: as soon as a new form is created, then, i assume, the user's inputs are lost. so how do you get hold of the user's input? usually one feeds the input data back into a database. with simple beans i copy the formdata to a new instantiated dto-bean within my action class and pass the dto-bean to my business-layer. but dealing with nested beans, where and how? sorry for pestering and thanks a lot in advance martin -- Urspruengliche Nachricht -- Von: <[EMAIL PROTECTED]> Antworten an: "Struts Users Mailing List" <[EMAIL PROTECTED]> Datum: Tue, 20 Jan 2004 13:54:30 +0100 >yes:-)) >And I am sure most of the people do have the same.I mean tieing the nested properties >to the session scope does take away a lot of flexibility. > >Anyhow just try my sample code...It should demonstrate the concept. > >regards, >Shirish > >-Original Message- >From: Mark Lowe [mailto:[EMAIL PROTECTED] >Sent: Tuesday, January 20, 2004 1:44 PM >To: Struts Users Mailing List >Subject: Re: getting data from form with nested beans > > >So you've had forms, with indexed properties with dynamic sizes working >when scoping to request? > > >On 20 Jan 2004, at 11:45, <[EMAIL PROTECTED]> wrote: > >> Hi, >> Is it flaming or what?I thought we were trying to solve each others >> problems.Still a last try. >> We have a complete application(3 modules/4000 classes/15 companies >> live as of date) which uses all form beans just in request scope.And >> all over the place we have used form beans in request scope.And the >> application is well and running. >> >> If you go t through my mail, you will understand why it will mail.SO >> please read the mail carefully. >> I will try to explain it again. >> >> When the form is submitted(the user presses submit button on >> screen),the corresponding action will be called by struts.At the same >> time, it will look for a actionForm from the mapping.As the scope is >> specified as request, a new form will be created.And if you have >> looked at my example carefully, you will see that the nested bean list >> is created when the form is created.But this nested list is empty.Now >> when struts autopopulation tries to populate a nested bean, it should >> find that the nested bean list is empty.But the lazy initialization >> mechanism in the indexed getter will take care that the list has >> enough of beans.See the code below. >> 33 >> //give indexed access to the beans >>>>> >>>>> public Employee getEmployee(int index){ >>>>> >>>>> //very imp >>>>> >>>>> //when a jsp is submited , then while auto populating the form,this >>>>> will >>>>> ensure >>>>> that >>>>> >>>>> // the form is populated properly. >>>>> >>>>> while(index >= beanList.size()){ >>>>> >>>>> beanList.add(new Employee()); >>>>> >>>>> } >> *************** >> >> And as explained in jsp part, as long as the property references are >> created properly, this will work.And with struts1.1 nested tags, you >> don't have to even use the script<%%> to create property is jsp. >> >> Hope this clarifies it.If not, try to run my example code. >> >> regards, >> Shirish >> >> -Original Message- >> From: Mark Lowe [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, January 20, 2004 12:28 PM >> To: Struts Users Mailing List >> Subject: Re: getting data from form with nested beans >> >> >> Oh yeah .. by working i mean when you submit.. >> >> >> On 20 Jan 2004, at 11:25, Mark Lowe wrote: >> >>> .. Show us all an example of a form with a dynamic size for a form >>> property thats scoped to the request then big shot.. >>> >>> Come on lets see it!!! >>> >>> >>> On 20 Jan 2004, at 10:45, <[EMAIL PROTECTED]> wrote: >>> >>>> The scope of form has nothing to do with usage of nested beans.And >>>> using session scope shoudl be avaided as far as possible as teh form >>>> will stay in session till it is explicitely removed from there.. >>>> >>>> The <% %> business is for the scripts so that the nested property >>>> referen
RE: getting data from form with nested beans
yes:-)) And I am sure most of the people do have the same.I mean tieing the nested properties to the session scope does take away a lot of flexibility. Anyhow just try my sample code...It should demonstrate the concept. regards, Shirish -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 20, 2004 1:44 PM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans So you've had forms, with indexed properties with dynamic sizes working when scoping to request? On 20 Jan 2004, at 11:45, <[EMAIL PROTECTED]> wrote: > Hi, > Is it flaming or what?I thought we were trying to solve each others > problems.Still a last try. > We have a complete application(3 modules/4000 classes/15 companies > live as of date) which uses all form beans just in request scope.And > all over the place we have used form beans in request scope.And the > application is well and running. > > If you go t through my mail, you will understand why it will mail.SO > please read the mail carefully. > I will try to explain it again. > > When the form is submitted(the user presses submit button on > screen),the corresponding action will be called by struts.At the same > time, it will look for a actionForm from the mapping.As the scope is > specified as request, a new form will be created.And if you have > looked at my example carefully, you will see that the nested bean list > is created when the form is created.But this nested list is empty.Now > when struts autopopulation tries to populate a nested bean, it should > find that the nested bean list is empty.But the lazy initialization > mechanism in the indexed getter will take care that the list has > enough of beans.See the code below. > 33 > //give indexed access to the beans >>>> >>>> public Employee getEmployee(int index){ >>>> >>>> //very imp >>>> >>>> //when a jsp is submited , then while auto populating the form,this >>>> will >>>> ensure >>>> that >>>> >>>> // the form is populated properly. >>>> >>>> while(index >= beanList.size()){ >>>> >>>> beanList.add(new Employee()); >>>> >>>> } > *** > > And as explained in jsp part, as long as the property references are > created properly, this will work.And with struts1.1 nested tags, you > don't have to even use the script<%%> to create property is jsp. > > Hope this clarifies it.If not, try to run my example code. > > regards, > Shirish > > -Original Message- > From: Mark Lowe [mailto:[EMAIL PROTECTED] > Sent: Tuesday, January 20, 2004 12:28 PM > To: Struts Users Mailing List > Subject: Re: getting data from form with nested beans > > > Oh yeah .. by working i mean when you submit.. > > > On 20 Jan 2004, at 11:25, Mark Lowe wrote: > >> .. Show us all an example of a form with a dynamic size for a form >> property thats scoped to the request then big shot.. >> >> Come on lets see it!!! >> >> >> On 20 Jan 2004, at 10:45, <[EMAIL PROTECTED]> wrote: >> >>> The scope of form has nothing to do with usage of nested beans.And >>> using session scope shoudl be avaided as far as possible as teh form >>> will stay in session till it is explicitely removed from there.. >>> >>> The <% %> business is for the scripts so that the nested property >>> reference can be created.But with struts1.1 , with the usage of >>> nested tags, oyu can get rid of that scriptlet code.See nested tags >>> for how to do that.I have myself never used nested tags. >>> >>> >>> -Original Message- >>> From: Mark Lowe [mailto:[EMAIL PROTECTED] >>> Sent: Tuesday, January 20, 2004 11:05 AM >>> To: Struts Users Mailing List >>> Subject: Re: getting data from form with nested beans >>> >>> >>> What's with all the <% %> business? Things to watch out for, method >>> names and the object cast to the jsp need to match names (e.g. >>> foo.getEmployee() and ${foo.employee}). The form must be scoped to >>> session if you are dynamically changing the size of the indexed >>> property. >>> >>> >>> >>> A better example would be a form bean with a getEmployees() method >>> and >>> a setEmployee rather than getBeanList or whatever it was. >>> >>> >>> public Object[] getEmployees() { >>> return emplyee
Re: getting data from form with nested beans
So you've had forms, with indexed properties with dynamic sizes working when scoping to request? On 20 Jan 2004, at 11:45, <[EMAIL PROTECTED]> wrote: Hi, Is it flaming or what?I thought we were trying to solve each others problems.Still a last try. We have a complete application(3 modules/4000 classes/15 companies live as of date) which uses all form beans just in request scope.And all over the place we have used form beans in request scope.And the application is well and running. If you go t through my mail, you will understand why it will mail.SO please read the mail carefully. I will try to explain it again. When the form is submitted(the user presses submit button on screen),the corresponding action will be called by struts.At the same time, it will look for a actionForm from the mapping.As the scope is specified as request, a new form will be created.And if you have looked at my example carefully, you will see that the nested bean list is created when the form is created.But this nested list is empty.Now when struts autopopulation tries to populate a nested bean, it should find that the nested bean list is empty.But the lazy initialization mechanism in the indexed getter will take care that the list has enough of beans.See the code below. 33 //give indexed access to the beans public Employee getEmployee(int index){ //very imp //when a jsp is submited , then while auto populating the form,this will ensure that // the form is populated properly. while(index >= beanList.size()){ beanList.add(new Employee()); } *** And as explained in jsp part, as long as the property references are created properly, this will work.And with struts1.1 nested tags, you don't have to even use the script<%%> to create property is jsp. Hope this clarifies it.If not, try to run my example code. regards, Shirish -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 20, 2004 12:28 PM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans Oh yeah .. by working i mean when you submit.. On 20 Jan 2004, at 11:25, Mark Lowe wrote: .. Show us all an example of a form with a dynamic size for a form property thats scoped to the request then big shot.. Come on lets see it!!! On 20 Jan 2004, at 10:45, <[EMAIL PROTECTED]> wrote: The scope of form has nothing to do with usage of nested beans.And using session scope shoudl be avaided as far as possible as teh form will stay in session till it is explicitely removed from there.. The <% %> business is for the scripts so that the nested property reference can be created.But with struts1.1 , with the usage of nested tags, oyu can get rid of that scriptlet code.See nested tags for how to do that.I have myself never used nested tags. -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 20, 2004 11:05 AM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans What's with all the <% %> business? Things to watch out for, method names and the object cast to the jsp need to match names (e.g. foo.getEmployee() and ${foo.employee}). The form must be scoped to session if you are dynamically changing the size of the indexed property. A better example would be a form bean with a getEmployees() method and a setEmployee rather than getBeanList or whatever it was. public Object[] getEmployees() { return emplyeeList.toArray(); } public void setEmployees(ArrayList employeeList) { this.employeeList = employeeList; } public Employee getEmployee(int i) { return (Employee) employeeList.get(i); } public void setEmployee(int i,Employee employee) { this.employeeList.add(i,employee); } .. public class Employee { private String name; public String getName() { return name; } etc } .. or .. On 20 Jan 2004, at 08:56, <[EMAIL PROTECTED]> wrote: I am resending my earlier mail on this user list..Go through the sample code and ask me if u don't understand something. The important portions are commented.Especially look at the jsps property how it is set and also the form bean.The property syntax I have used was for struts 1.0 ..But with struts 1.1 , you can have a better cleaner syntax using nested tags.But I have not used it...This works for 1.1 as well.. //Form Class import java.util.ArrayList; import java.util.List; import org.apache.struts.action.ActionForm; public class ExampleListForm extends ActionForm { //A list of Emp beans private List beanList = new ArrayList(); public List getBeanList(){ return beanList; } public void setBeanList(List list){ beanList = list; } //very imp. //give indexed access to the beans public Employee getEmployee(int inde
RE: getting data from form with nested beans
Hi, Is it flaming or what?I thought we were trying to solve each others problems.Still a last try. We have a complete application(3 modules/4000 classes/15 companies live as of date) which uses all form beans just in request scope.And all over the place we have used form beans in request scope.And the application is well and running. If you go t through my mail, you will understand why it will mail.SO please read the mail carefully. I will try to explain it again. When the form is submitted(the user presses submit button on screen),the corresponding action will be called by struts.At the same time, it will look for a actionForm from the mapping.As the scope is specified as request, a new form will be created.And if you have looked at my example carefully, you will see that the nested bean list is created when the form is created.But this nested list is empty.Now when struts autopopulation tries to populate a nested bean, it should find that the nested bean list is empty.But the lazy initialization mechanism in the indexed getter will take care that the list has enough of beans.See the code below. 33 //give indexed access to the beans >>> >>> public Employee getEmployee(int index){ >>> >>> //very imp >>> >>> //when a jsp is submited , then while auto populating the form,this >>> will >>> ensure >>> that >>> >>> // the form is populated properly. >>> >>> while(index >= beanList.size()){ >>> >>> beanList.add(new Employee()); >>> >>> } *** And as explained in jsp part, as long as the property references are created properly, this will work.And with struts1.1 nested tags, you don't have to even use the script<%%> to create property is jsp. Hope this clarifies it.If not, try to run my example code. regards, Shirish -----Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 20, 2004 12:28 PM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans Oh yeah .. by working i mean when you submit.. On 20 Jan 2004, at 11:25, Mark Lowe wrote: > .. Show us all an example of a form with a dynamic size for a form > property thats scoped to the request then big shot.. > > Come on lets see it!!! > > > On 20 Jan 2004, at 10:45, <[EMAIL PROTECTED]> wrote: > >> The scope of form has nothing to do with usage of nested beans.And >> using session scope shoudl be avaided as far as possible as teh form >> will stay in session till it is explicitely removed from there.. >> >> The <% %> business is for the scripts so that the nested property >> reference can be created.But with struts1.1 , with the usage of >> nested tags, oyu can get rid of that scriptlet code.See nested tags >> for how to do that.I have myself never used nested tags. >> >> >> -Original Message- >> From: Mark Lowe [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, January 20, 2004 11:05 AM >> To: Struts Users Mailing List >> Subject: Re: getting data from form with nested beans >> >> >> What's with all the <% %> business? Things to watch out for, method >> names and the object cast to the jsp need to match names (e.g. >> foo.getEmployee() and ${foo.employee}). The form must be scoped to >> session if you are dynamically changing the size of the indexed >> property. >> >> >> >> A better example would be a form bean with a getEmployees() method and >> a setEmployee rather than getBeanList or whatever it was. >> >> >> public Object[] getEmployees() { >> return emplyeeList.toArray(); >> } >> >> public void setEmployees(ArrayList employeeList) { >> this.employeeList = employeeList; >> } >> >> public Employee getEmployee(int i) { >> return (Employee) employeeList.get(i); >> } >> >> public void setEmployee(int i,Employee employee) { >> this.employeeList.add(i,employee); >> } >> >> >> .. >> >> public class Employee { >> private String name; >> >> public String getName() { >> return name; >> } >> etc >> } >> >> .. >> >> >> >> >> >> >> >> or >> >> >> .. >> >> >> >> On 20 Jan 2004, at 08:56, <[EMAIL PROTECTED]> wrote: >> >>> I am resending my earlier mail on this user list..Go through the >>> sample code >>> and >>> ask me if u don't understand someth
Re: getting data from form with nested beans
Oh yeah .. by working i mean when you submit.. On 20 Jan 2004, at 11:25, Mark Lowe wrote: .. Show us all an example of a form with a dynamic size for a form property thats scoped to the request then big shot.. Come on lets see it!!! On 20 Jan 2004, at 10:45, <[EMAIL PROTECTED]> wrote: The scope of form has nothing to do with usage of nested beans.And using session scope shoudl be avaided as far as possible as teh form will stay in session till it is explicitely removed from there.. The <% %> business is for the scripts so that the nested property reference can be created.But with struts1.1 , with the usage of nested tags, oyu can get rid of that scriptlet code.See nested tags for how to do that.I have myself never used nested tags. -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 20, 2004 11:05 AM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans What's with all the <% %> business? Things to watch out for, method names and the object cast to the jsp need to match names (e.g. foo.getEmployee() and ${foo.employee}). The form must be scoped to session if you are dynamically changing the size of the indexed property. A better example would be a form bean with a getEmployees() method and a setEmployee rather than getBeanList or whatever it was. public Object[] getEmployees() { return emplyeeList.toArray(); } public void setEmployees(ArrayList employeeList) { this.employeeList = employeeList; } public Employee getEmployee(int i) { return (Employee) employeeList.get(i); } public void setEmployee(int i,Employee employee) { this.employeeList.add(i,employee); } .. public class Employee { private String name; public String getName() { return name; } etc } .. or .. On 20 Jan 2004, at 08:56, <[EMAIL PROTECTED]> wrote: I am resending my earlier mail on this user list..Go through the sample code and ask me if u don't understand something. The important portions are commented.Especially look at the jsps property how it is set and also the form bean.The property syntax I have used was for struts 1.0 ..But with struts 1.1 , you can have a better cleaner syntax using nested tags.But I have not used it...This works for 1.1 as well.. //Form Class import java.util.ArrayList; import java.util.List; import org.apache.struts.action.ActionForm; public class ExampleListForm extends ActionForm { //A list of Emp beans private List beanList = new ArrayList(); public List getBeanList(){ return beanList; } public void setBeanList(List list){ beanList = list; } //very imp. //give indexed access to the beans public Employee getEmployee(int index){ //very imp //when a jsp is submited , then while auto populating the form,this will ensure that // the form is populated properly. while(index >= beanList.size()){ beanList.add(new Employee()); } return (Employee)beanList.get(index); } public void setEmployee(int index,Employee emp){ beanList.set(index,emp); } } *** Bean class public class Employee { private String name; private String salary; /** * Returns the name. * @return String */ public String getName() { return name; } /** * Returns the salary. * @return String */ public String getSalary() { return salary; } /** * Sets the name. * @param name The name to set */ public void setName(String name) { this.name = name; } /** * Sets the salary. * @param salary The salary to set */ public void setSalary(String salary) { this.salary = salary; } } JSP <%@ page language="java"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> "> "> Explanation: See how the property is constructed. "> So this will result in a parameter name employee[i].name in the http request.So when the jsp is rendered, this will be interpreted as getEmployee[i].getName().And when the jsp is submitted , the same will be interpreted as getEmployee[i].setName().And this will result in auto population of data in the form as u can see. So check the indexed properties on the form as well.(Especially the getEmployee(index i) proeprty with while loop.) Hope this helps. regards, Shirish. -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Monday, January 19, 2004 6:18 PM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans Dunno what that thread on lazy lists was but nesting beans should work fine, but you will need to scope any property that you want a dynamic size to session. Shouldn't be anymore complicated than that. On 19 Jan 2004, at 16:01, Martin Sturzenegger wrote: hi, concerning
Re: getting data from form with nested beans
.. Show us all an example of a form with a dynamic size for a form property thats scoped to the request then big shot.. Come on lets see it!!! On 20 Jan 2004, at 10:45, <[EMAIL PROTECTED]> wrote: The scope of form has nothing to do with usage of nested beans.And using session scope shoudl be avaided as far as possible as teh form will stay in session till it is explicitely removed from there.. The <% %> business is for the scripts so that the nested property reference can be created.But with struts1.1 , with the usage of nested tags, oyu can get rid of that scriptlet code.See nested tags for how to do that.I have myself never used nested tags. -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 20, 2004 11:05 AM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans What's with all the <% %> business? Things to watch out for, method names and the object cast to the jsp need to match names (e.g. foo.getEmployee() and ${foo.employee}). The form must be scoped to session if you are dynamically changing the size of the indexed property. A better example would be a form bean with a getEmployees() method and a setEmployee rather than getBeanList or whatever it was. public Object[] getEmployees() { return emplyeeList.toArray(); } public void setEmployees(ArrayList employeeList) { this.employeeList = employeeList; } public Employee getEmployee(int i) { return (Employee) employeeList.get(i); } public void setEmployee(int i,Employee employee) { this.employeeList.add(i,employee); } .. public class Employee { private String name; public String getName() { return name; } etc } .. or .. On 20 Jan 2004, at 08:56, <[EMAIL PROTECTED]> wrote: I am resending my earlier mail on this user list..Go through the sample code and ask me if u don't understand something. The important portions are commented.Especially look at the jsps property how it is set and also the form bean.The property syntax I have used was for struts 1.0 ..But with struts 1.1 , you can have a better cleaner syntax using nested tags.But I have not used it...This works for 1.1 as well.. //Form Class import java.util.ArrayList; import java.util.List; import org.apache.struts.action.ActionForm; public class ExampleListForm extends ActionForm { //A list of Emp beans private List beanList = new ArrayList(); public List getBeanList(){ return beanList; } public void setBeanList(List list){ beanList = list; } //very imp. //give indexed access to the beans public Employee getEmployee(int index){ //very imp //when a jsp is submited , then while auto populating the form,this will ensure that // the form is populated properly. while(index >= beanList.size()){ beanList.add(new Employee()); } return (Employee)beanList.get(index); } public void setEmployee(int index,Employee emp){ beanList.set(index,emp); } } *** Bean class public class Employee { private String name; private String salary; /** * Returns the name. * @return String */ public String getName() { return name; } /** * Returns the salary. * @return String */ public String getSalary() { return salary; } /** * Sets the name. * @param name The name to set */ public void setName(String name) { this.name = name; } /** * Sets the salary. * @param salary The salary to set */ public void setSalary(String salary) { this.salary = salary; } } JSP <%@ page language="java"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> "> "> Explanation: See how the property is constructed. "> So this will result in a parameter name employee[i].name in the http request.So when the jsp is rendered, this will be interpreted as getEmployee[i].getName().And when the jsp is submitted , the same will be interpreted as getEmployee[i].setName().And this will result in auto population of data in the form as u can see. So check the indexed properties on the form as well.(Especially the getEmployee(index i) proeprty with while loop.) Hope this helps. regards, Shirish. -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Monday, January 19, 2004 6:18 PM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans Dunno what that thread on lazy lists was but nesting beans should work fine, but you will need to scope any property that you want a dynamic size to session. Shouldn't be anymore complicated than that. On 19 Jan 2004, at 16:01, Martin Sturzenegger wrote: hi, concerning nested properties, i found so many questions, hints etc. in the archive but nothing that real
RE: getting data from form with nested beans
The scope of form has nothing to do with usage of nested beans.And using session scope shoudl be avaided as far as possible as teh form will stay in session till it is explicitely removed from there.. The <% %> business is for the scripts so that the nested property reference can be created.But with struts1.1 , with the usage of nested tags, oyu can get rid of that scriptlet code.See nested tags for how to do that.I have myself never used nested tags. -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 20, 2004 11:05 AM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans What's with all the <% %> business? Things to watch out for, method names and the object cast to the jsp need to match names (e.g. foo.getEmployee() and ${foo.employee}). The form must be scoped to session if you are dynamically changing the size of the indexed property. A better example would be a form bean with a getEmployees() method and a setEmployee rather than getBeanList or whatever it was. public Object[] getEmployees() { return emplyeeList.toArray(); } public void setEmployees(ArrayList employeeList) { this.employeeList = employeeList; } public Employee getEmployee(int i) { return (Employee) employeeList.get(i); } public void setEmployee(int i,Employee employee) { this.employeeList.add(i,employee); } .. public class Employee { private String name; public String getName() { return name; } etc } .. or .. On 20 Jan 2004, at 08:56, <[EMAIL PROTECTED]> wrote: > I am resending my earlier mail on this user list..Go through the > sample code > and > ask me if u don't understand something. > > The important portions are commented.Especially look at the jsps > property > how > it is set and also the form bean.The property syntax I have used was > for struts 1.0 ..But with struts 1.1 , you can have a better cleaner > syntax using nested tags.But I have not used it...This works for 1.1 > as well.. > > > > //Form Class > > import java.util.ArrayList; > > import java.util.List; > > import org.apache.struts.action.ActionForm; > > public class ExampleListForm extends ActionForm { > > //A list of Emp beans > > private List beanList = new ArrayList(); > > public List getBeanList(){ > > return beanList; > > } > > public void setBeanList(List list){ > > beanList = list; > > } > > //very imp. > > //give indexed access to the beans > > public Employee getEmployee(int index){ > > //very imp > > //when a jsp is submited , then while auto populating the form,this > will > ensure > that > > // the form is populated properly. > > while(index >= beanList.size()){ > > beanList.add(new Employee()); > > } > > return (Employee)beanList.get(index); > > } > > public void setEmployee(int index,Employee emp){ > > beanList.set(index,emp); > > } > > } > > *** > > Bean class > > public class Employee { > > private String name; > > private String salary; > > /** > > * Returns the name. > > * @return String > > */ > > public String getName() { > > return name; > > } > > /** > > * Returns the salary. > > * @return String > > */ > > public String getSalary() { > > return salary; > > } > > /** > > * Sets the name. > > * @param name The name to set > > */ > > public void setName(String name) { > > this.name = name; > > } > > /** > > * Sets the salary. > > * @param salary The salary to set > > */ > > public void setSalary(String salary) { > > this.salary = salary; > > } > > } > > > > JSP > > <%@ page language="java"%> > > <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> > > > > > > indexId="i"/> > > \"].name\"%>"> > > \"].salary\"%>"> > > > > > > > > Explanation: > > See how the property is constructed. > > \"].name\"%>"> > > So this will result in a parameter name employee[i].name in the http > request.So > when the jsp is rendered, this will be interpreted as > > getEmployee[i].getName().And when the jsp is submitted , the same will > be > interpreted as getEmployee[i].setName().And this will result in auto > popu
Re: getting data from form with nested beans
What's with all the <% %> business? Things to watch out for, method names and the object cast to the jsp need to match names (e.g. foo.getEmployee() and ${foo.employee}). The form must be scoped to session if you are dynamically changing the size of the indexed property. A better example would be a form bean with a getEmployees() method and a setEmployee rather than getBeanList or whatever it was. public Object[] getEmployees() { return emplyeeList.toArray(); } public void setEmployees(ArrayList employeeList) { this.employeeList = employeeList; } public Employee getEmployee(int i) { return (Employee) employeeList.get(i); } public void setEmployee(int i,Employee employee) { this.employeeList.add(i,employee); } .. public class Employee { private String name; public String getName() { return name; } etc } .. or .. On 20 Jan 2004, at 08:56, <[EMAIL PROTECTED]> wrote: I am resending my earlier mail on this user list..Go through the sample code and ask me if u don't understand something. The important portions are commented.Especially look at the jsps property how it is set and also the form bean.The property syntax I have used was for struts 1.0 ..But with struts 1.1 , you can have a better cleaner syntax using nested tags.But I have not used it...This works for 1.1 as well.. //Form Class import java.util.ArrayList; import java.util.List; import org.apache.struts.action.ActionForm; public class ExampleListForm extends ActionForm { //A list of Emp beans private List beanList = new ArrayList(); public List getBeanList(){ return beanList; } public void setBeanList(List list){ beanList = list; } //very imp. //give indexed access to the beans public Employee getEmployee(int index){ //very imp //when a jsp is submited , then while auto populating the form,this will ensure that // the form is populated properly. while(index >= beanList.size()){ beanList.add(new Employee()); } return (Employee)beanList.get(index); } public void setEmployee(int index,Employee emp){ beanList.set(index,emp); } } *** Bean class public class Employee { private String name; private String salary; /** * Returns the name. * @return String */ public String getName() { return name; } /** * Returns the salary. * @return String */ public String getSalary() { return salary; } /** * Sets the name. * @param name The name to set */ public void setName(String name) { this.name = name; } /** * Sets the salary. * @param salary The salary to set */ public void setSalary(String salary) { this.salary = salary; } } JSP <%@ page language="java"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> "> "> Explanation: See how the property is constructed. "> So this will result in a parameter name employee[i].name in the http request.So when the jsp is rendered, this will be interpreted as getEmployee[i].getName().And when the jsp is submitted , the same will be interpreted as getEmployee[i].setName().And this will result in auto population of data in the form as u can see. So check the indexed properties on the form as well.(Especially the getEmployee(index i) proeprty with while loop.) Hope this helps. regards, Shirish. -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Monday, January 19, 2004 6:18 PM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans Dunno what that thread on lazy lists was but nesting beans should work fine, but you will need to scope any property that you want a dynamic size to session. Shouldn't be anymore complicated than that. On 19 Jan 2004, at 16:01, Martin Sturzenegger wrote: hi, concerning nested properties, i found so many questions, hints etc. in the archive but nothing that really helped all the way...i'm still confused (or even more now...) i still don't understand how struts handles input from a form that holds an iteration of nested beans. is the following correct? as soon as the user submits the form, the actionform-bean, holding the nested beans with the user's changes, gets transmitted. is it so, that before the action-class is called, the form-bean's reset() method is called, and all nested beans are set to null by default? so do i have to override the reset() method? what do i iterate over in the reset() method to get the user's inputs? how do i limit the iteration? does the validate() method gets called before the reset method?. i've seen examples, where a dto-class is instanciated within the reset() method. is this the way to do it? do i have to access these dto-beans in th
RE: getting data from form with nested beans
I am resending my earlier mail on this user list..Go through the sample code and ask me if u don't understand something. The important portions are commented.Especially look at the jsps property how it is set and also the form bean.The property syntax I have used was for struts 1.0 ..But with struts 1.1 , you can have a better cleaner syntax using nested tags.But I have not used it...This works for 1.1 as well.. //Form Class import java.util.ArrayList; import java.util.List; import org.apache.struts.action.ActionForm; public class ExampleListForm extends ActionForm { //A list of Emp beans private List beanList = new ArrayList(); public List getBeanList(){ return beanList; } public void setBeanList(List list){ beanList = list; } //very imp. //give indexed access to the beans public Employee getEmployee(int index){ //very imp //when a jsp is submited , then while auto populating the form,this will ensure that // the form is populated properly. while(index >= beanList.size()){ beanList.add(new Employee()); } return (Employee)beanList.get(index); } public void setEmployee(int index,Employee emp){ beanList.set(index,emp); } } *** Bean class public class Employee { private String name; private String salary; /** * Returns the name. * @return String */ public String getName() { return name; } /** * Returns the salary. * @return String */ public String getSalary() { return salary; } /** * Sets the name. * @param name The name to set */ public void setName(String name) { this.name = name; } /** * Sets the salary. * @param salary The salary to set */ public void setSalary(String salary) { this.salary = salary; } } JSP <%@ page language="java"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> "> "> Explanation: See how the property is constructed. "> So this will result in a parameter name employee[i].name in the http request.So when the jsp is rendered, this will be interpreted as getEmployee[i].getName().And when the jsp is submitted , the same will be interpreted as getEmployee[i].setName().And this will result in auto population of data in the form as u can see. So check the indexed properties on the form as well.(Especially the getEmployee(index i) proeprty with while loop.) Hope this helps. regards, Shirish. -Original Message- From: Mark Lowe [mailto:[EMAIL PROTECTED] Sent: Monday, January 19, 2004 6:18 PM To: Struts Users Mailing List Subject: Re: getting data from form with nested beans Dunno what that thread on lazy lists was but nesting beans should work fine, but you will need to scope any property that you want a dynamic size to session. Shouldn't be anymore complicated than that. On 19 Jan 2004, at 16:01, Martin Sturzenegger wrote: > hi, > concerning nested properties, i found so many questions, hints etc. in > the archive but nothing that really helped all the way...i'm still > confused (or even more now...) > i still don't understand how struts handles input from a form that > holds an iteration of nested beans. > is the following correct? > as soon as the user submits the form, the actionform-bean, holding the > nested beans with the user's changes, gets transmitted. > is it so, that before the action-class is called, the form-bean's > reset() method is called, and all nested beans are set to null by > default? > so do i have to override the reset() method? > what do i iterate over in the reset() method to get the user's inputs? > how do i limit the iteration? > does the validate() method gets called before the reset method?. > > i've seen examples, where a dto-class is instanciated within the > reset() method. > is this the way to do it? > do i have to access these dto-beans in the action class? > > could somebody give me a little example of a reset()-method, just to > show how the user's input can be gathered and then stored away? > > and.. what are lazy lists? i wasn't able to find a definition > > sorry about it but > > regards from an utterly confused martin > > > > > -- Urspruengliche Nachricht -- > Von: <[EMAIL PROTECTED]> > Datum: Mon, 19 Jan 2004 10:52:10 +0100 > >> You ahve a fixed length or Empty list in the form.So when the auto >> population tries to populate the nested bean for the list which is >> empty/fixed size,you get this exception. >> Try to use lazy list or search the archive for nested property >> usage...There are many examples which will demonatrate how to use it. >> >> H
Re: getting data from form with nested beans
Dunno what that thread on lazy lists was but nesting beans should work fine, but you will need to scope any property that you want a dynamic size to session. Shouldn't be anymore complicated than that. On 19 Jan 2004, at 16:01, Martin Sturzenegger wrote: hi, concerning nested properties, i found so many questions, hints etc. in the archive but nothing that really helped all the way...i'm still confused (or even more now...) i still don't understand how struts handles input from a form that holds an iteration of nested beans. is the following correct? as soon as the user submits the form, the actionform-bean, holding the nested beans with the user's changes, gets transmitted. is it so, that before the action-class is called, the form-bean's reset() method is called, and all nested beans are set to null by default? so do i have to override the reset() method? what do i iterate over in the reset() method to get the user's inputs? how do i limit the iteration? does the validate() method gets called before the reset method?. i've seen examples, where a dto-class is instanciated within the reset() method. is this the way to do it? do i have to access these dto-beans in the action class? could somebody give me a little example of a reset()-method, just to show how the user's input can be gathered and then stored away? and.. what are lazy lists? i wasn't able to find a definition sorry about it but regards from an utterly confused martin -- Urspruengliche Nachricht -- Von: <[EMAIL PROTECTED]> Datum: Mon, 19 Jan 2004 10:52:10 +0100 You ahve a fixed length or Empty list in the form.So when the auto population tries to populate the nested bean for the list which is empty/fixed size,you get this exception. Try to use lazy list or search the archive for nested property usage...There are many examples which will demonatrate how to use it. HTH. regards, Shirish -Original Message- From: Martin Sturzenegger [mailto:[EMAIL PROTECTED] Sent: Monday, January 19, 2004 10:46 AM To: Struts Users Mailing List; [EMAIL PROTECTED]; Struts Users Mailing List Subject: Re: Including one JSP in another i try to receive user-input from a form using a list of nested beans. after hitting submit i get an ArrayIndexOutOfBoundsException can somebody give me a hint? many thanks martin stacktrace: java.lang.ArrayIndexOutOfBoundsException java.lang.reflect.Array.get(Native Method) org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(Property Utils.java:525) org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(Property Utils.java:428) org.apache.commons.beanutils.PropertyUtils.getNestedProperty(PropertyU tils.java:770) org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.j ava:801) org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java: 881) org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808) org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252) org.apache.struts.action.RequestProcessor.processPopulate(RequestProce ssor.java:821) org.apache.struts.action.RequestProcessor.process(RequestProcessor.jav a:254) org.apache.struts.action.ActionServlet.process(ActionServlet.java: 1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:763) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) Confidentiality Notice The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain confidential or privileged information. If you are not the intended recipient, please notify the sender at Wipro or [EMAIL PROTECTED] immediately and destroy all copies of this message and any attachments. -- --- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Confidentiality Notice The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain confidential or privileged information. If you are not the intended recipient, please notify the sender at Wipro or [EMAIL PROTECTED] immediately and destroy all copies of this message and any attachments. -- --- 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] --