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.
>>>
>>> <html:text name="bean" property="property" indexed="true" />
>>>
>>> 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
>>> }
>>>
>>> ..
>>>
>>> <logic:iterate id="employee" name="employeeForm"  
>>> property="employees">
>>>
>>>     <html:"text name="employee" property="name" indexed="true" />
>>>
>>> </logic:iterate>
>>>
>>> or
>>>
>>> <c:forEach var="employee" items="${employeeForm.employees}">
>>>     ..
>>>
>>>
>>>
>>> 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" %>
>>>>
>>>> <html:html>
>>>>
>>>> <html:form action="/" >
>>>>
>>>> <logic:iterate id="bean" name="exampleListForm" property="beanList"
>>>> indexId="i"/>
>>>>
>>>> <html:text name="exampleListForm"  property="<%=\"employee[\" + i
>>>> \"].name\"%>">
>>>>
>>>> <html:text name="exampleListForm"  property="<%=\"employee[\" + i
>>>> \"].salary\"%>">
>>>>
>>>> </logic:iterate>
>>>>
>>>> </html:form>
>>>>
>>>> </html:html>
>>>>
>>>> Explanation:
>>>>
>>>> See how the property is constructed.
>>>>
>>>> <html:text name="exampleListForm"  property="<%=\"employee[\" + i
>>>> \"].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
>>>> 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.
>>>>>>
>>>>>> 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(Prop 
>>>>>> e
>>>>>> rt
>>>>>> y
>>>>>> Utils.java:525)
>>>>>>  
>>>>>> org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(Prop 
>>>>>> e
>>>>>> rt
>>>>>> y
>>>>>> Utils.java:428)
>>>>>>  
>>>>>> org.apache.commons.beanutils.PropertyUtils.getNestedProperty(Prope 
>>>>>> r
>>>>>> ty
>>>>>> U
>>>>>> tils.java:770)
>>>>>>  
>>>>>> org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUti 
>>>>>> l
>>>>>> s.
>>>>>> 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(RequestP 
>>>>>> r
>>>>>> oc
>>>>>> e
>>>>>> ssor.java:821)
>>>>>>  
>>>>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor 
>>>>>> .
>>>>>> ja
>>>>>> v
>>>>>> 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]
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ----------------------------------------------------------------- 
>>>>>>> -
>>>>>>> --
>>>>>>> -
>>>>>>> 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]
>>>>>
>>>>
>>>>
>>>> -------------------------------------------------------------------- 
>>>> -
>>>> 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]
>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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]
>
>
> ---------------------------------------------------------------------
> 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]

Reply via email to