i tried to pre populate my self like this..It worked

public void setBenefitDescription(int key, Object value) {
      int size = benefitDescriptions.size();
      if (size <= key) {
            for (int i = size; i < key + 1; i++) {
                  benefitDescriptions.add(value);
            }
      }
      benefitDescriptions.set(key, value);
}


Thank-you,
Manoj Mathew
GIS 515-362-0539


-----Original Message-----
From: Nathan Ewing [mailto:[EMAIL PROTECTED]
Sent: Wednesday, January 14, 2004 11:59 AM
To: 'Struts Users Mailing List'
Subject: RE: BeanUtils.populate Invocation Error


I figured out what is happening.  When you hit submit on the form, the
Struts populate method calls getProperty(int index), but never bothers to
actually do a setPropertyList (Property[]) beforehand, so the bean tries to
return a non-existent item in the array.  After I noticed this I looked back
in the forum and found out this is a common problem/bug in struts.

        Nathan

-----Original Message-----
From: Mark Lowe [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, January 14, 2004 11:30 AM
To: Struts Users Mailing List
Subject: Re: BeanUtils.populate Invocation Error

I've never tried putting a bean in a bean and then referring to itself,  
does the java stuff that can sniff bean properties deal with that.

The refraction or reflection stuff that bean utils does.



On 14 Jan 2004, at 15:24, Nathan Ewing wrote:

> Yes, except for 2 minor differences, I'm using an array[] instead of an
> ArrayList, and their the same bean, with two different actions, sorta  
> like
> the following:
>
> public class PropertyEditAction extends Action {
>       //Load, Display, and save one Property
> }
> public class PropertyListAction extends Action {
>       //Load, Display, and Save list of beans all at once
> }
> public class Property extends ActionForm {
>
>       private String blahItem;
>       private Property[] propertyList;
>
>       public Property() {
>               blahItem = null;
>               propertyList = null;
>               }
>
>       public String getBlahItem(){return blahItem;}
>       public void setBlahItem(String tempItem){blahItem = tempItem;}
>
>       public Property getPropertyList(int i) {
>               return propertyList[i];
>       }
>
>       public void setPropertyList(Property[] properties) {
>               propertyList = properties;
>       }
>       
>       public void setPropertyList(int i, Property property) {
>               propertyList[i] = property;
>       }
> }
>
>
> -----Original Message-----
> From: Mark Lowe [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, January 14, 2004 9:58 AM
> To: Struts Users Mailing List
> Subject: Re: BeanUtils.populate Invocation Error
>
> So have you something like this?
>
> public class PropertyEditForm extends ActionForm {
>       //bla bla
>       
> }
>
> public class PropertyListForm extends ActionForm {
>
>       private ArrayList propertyList;
>
>       public PropertyListForm() {
>               this.propertyList = new ArrayList();
>       }
>
>       public PropertyEditForm getProperty(int i) {
>               return (PropertyEditForm) propertyList.get(i);
>       }
>
>       public void setProperties(Object[] properties) {
>               ..
>       }
>       
>       public void setProperty(int i, PropertyEditForm property) {
>               propertyList.add(i, property);
>       }
>
>
> }
>
>
>
> On 14 Jan 2004, at 14:38, Nathan Ewing wrote:
>
>> Basically all I have is 1 form bean that includes 2 arrays of itself
>> in it.
>>
>> When the app runs it gets 2 lists of the different categories of
>> SoldProperty and makes a jsp form that allows you to change certain
>> details
>> of the beans all at once, and then if you click on one of the beans
>> you can
>> edit them individually.
>>
>> There are actually two actions, one is PropertyList, which only loads
>> and
>> manages those two arrays of beans, and then there is PropertyEdit,
>> which
>> works on an individual bean, and ignores the two lists.
>>
>> I hope this makes sense.
>>
>> The code I posted below is a shortcut I put in all my beans.  I
>> overrode
>> ActionForm and put a couple extra functions in.  One of them
>> automatically
>> resets all the variables in the bean for me without having to manually
>> write
>> a reset function for every bean to do the same thing.
>>
>> The other changes the way validate works.  Instead of 1 function that
>> does
>> all the validating, I write individual validateAttributeName()
>> functions and
>> the code below just calls all of them for me.  Of course none of the
>> validate code matters, cause I didn't call it here (which makes me
>> wonder
>> why I bothered to post it).
>>
>> Somehow I doubt you are stupid :)
>>
>> I hope I didn't make all this sounds more complicated than it is.  All
>> I
>> really wanna do is allow the users of my site to check a bunch of
>> checkboxes
>> all at once for multiple records instead of opening them all
>> individually.
>>
>>      Thanks,
>>      Nathan
>>
>>
>>
>> -----Original Message-----
>> From: Mark Lowe [mailto:[EMAIL PROTECTED]
>> Sent: Wednesday, January 14, 2004 9:17 AM
>> To: Struts Users Mailing List
>> Subject: Re: BeanUtils.populate Invocation Error
>>
>> Looks complicated what are you trying to do? Sorry I'm pretty stupid
>> and so i try and keep things simpler.
>>
>>
>> On 14 Jan 2004, at 13:55, Nathan Ewing wrote:
>>
>>> I posted much of the form bean code at the bottom.  Aside for the two
>>> arrays
>>> of SoldProperty, there are a bunch of getString and setString.  This
>>> is part
>>> of the bean SoldProperty (aka there are two arrays of SoldProperty in
>>> the
>>> SoldProperty bean).
>>>
>>> I altered the validate code and reset code so that it does the
>>> validating
>>> and resetting for me, as follows:
>>>
>>> If there is anything else you need please let me know.
>>>
>>>     Nathan
>>> --------------------------------------------------------------------
>>>
>>>     public ActionErrors validate(ActionMapping mapping,
>>> HttpServletRequest request, String[] propertyList) {
>>>             //Reset errors
>>>             errors = new ActionErrors();
>>>             
>>>             
>>>             ClassManager manager = new ClassManager (this);
>>>             for (int a = 0; a < propertyList.length; a++){
>>>                     try {
>>>                             String methodName = "validate" +
>>> propertyList[a];
>>>                             manager.runNoArgMethod(methodName);
>>>                             
>>>                             } catch (NoSuchMethodException e){
>>>                                     //Method Doesn't exist, Don't worry
>>> about it
>>>                             } catch (IllegalAccessException e){
>>>                             } catch
>>> (java.lang.reflect.InvocationTargetException e){}
>>>
>>>                     }
>>>             return errors;
>>>             
>>>             }
>>>
>>>     public void reset(ActionMapping mapping, HttpServletRequest request)
>>> {
>>>             ClassManager manager = new ClassManager (this);
>>>             for (int a = 0; a < DataMembers.length; a++){
>>>                     try {
>>>                             String methodName = "set" + DataMembers[a];
>>>                             Class[] argTypes = {String.class};
>>>                             Object[] args = {null};
>>>                             manager.runMethod(methodName, argTypes,
>>> args);                              
>>>                             
>>>                             } catch (NoSuchMethodException e){
>>>                                     //Method Doesn't exist, Don't worry
>>> about it
>>>                             } catch (IllegalAccessException e){
>>>                             } catch
>>> (java.lang.reflect.InvocationTargetException e){}
>>>
>>>                     }
>>>     
>>>             }
>>>
>>>
>>> -----Original Message-----
>>> From: Mark Lowe [mailto:[EMAIL PROTECTED]
>>> Sent: Wednesday, January 14, 2004 4:12 AM
>>> To: Struts Users Mailing List
>>> Subject: Re: BeanUtils.populate Invocation Error
>>>
>>> I had a similar problem yesterday with multiple selected select  
>>> menus.
>>> What does your form bean look like and then your nested beans.
>>>
>>>
>>>
>>> On 14 Jan 2004, at 03:57, Nathan Ewing wrote:
>>>
>>>> I have a jsp page with a form on it using indexed properties.  I  
>>>> have
>>>> a bean
>>>> with an array of beans that I use to connect with the jsp page.  The
>>>> page
>>>> displays fine, but when I try to save it, I get the following error:
>>>>
>>>> javax.servlet.ServletException: BeanUtils.populate
>>>>    at
>>>> org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
>>>>    at
>>>> org.apache.struts.action.RequestProcessor.processPopulate(RequestPro 
>>>> c
>>>> e
>>>> s
>>>> sor.j
>>>> ava:821)
>>>>    at
>>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor.j 
>>>> a
>>>> v
>>>> a
>>>> :254)
>>>>    at
>>>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:
>>>> 1482)
>>>>    at
>>>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java: 
>>>> 525)
>>>>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
>>>>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>>>>    at
>>>> org.apache.catalina.core.StandardWrapperValve.invokeServletService(S 
>>>> t
>>>> a
>>>> n
>>>> dardW
>>>> rapperValve.java:720)
>>>>    at
>>>> org.apache.catalina.core.StandardWrapperValve.access$000(StandardWra 
>>>> p
>>>> p
>>>> e
>>>> rValv
>>>> e.java:118)
>>>>    at
>>>> org.apache.catalina.core.StandardWrapperValve$1.run(StandardWrapperV 
>>>> a
>>>> l
>>>> v
>>>> e.jav
>>>> a:278)
>>>>    at java.security.AccessController.doPrivileged(Native Method)
>>>>    at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapper 
>>>> V
>>>> a
>>>> l
>>>> ve.ja
>>>> va:274)
>>>>    at
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.ja 
>>>> v
>>>> a
>>>> :
>>>> 505)
>>>>    at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContext 
>>>> V
>>>> a
>>>> l
>>>> ve.ja
>>>> va:212)
>>>>    at
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.ja 
>>>> v
>>>> a
>>>> :
>>>> 505)
>>>>    at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve. 
>>>> j
>>>> a
>>>> v
>>>> a:203
>>>> )
>>>>    at
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.ja 
>>>> v
>>>> a
>>>> :
>>>> 505)
>>>>    at
>>>> com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProc 
>>>> e
>>>> s
>>>> s
>>>> or.ja
>>>> va:157)
>>>>    at com.iplanet.ias.web.WebContainer.service(WebContainer.java:598)
>>>>
>>>>
>>>> Root Cause
>>>>
>>>> java.lang.reflect.InvocationTargetException
>>>>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>    at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl 
>>>> .
>>>> j
>>>> a
>>>> va:39
>>>> )
>>>>    at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce 
>>>> s
>>>> s
>>>> o
>>>> rImpl
>>>> .java:25)
>>>>    at java.lang.reflect.Method.invoke(Method.java:324)
>>>>    at
>>>> org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(Proper 
>>>> t
>>>> y
>>>> U
>>>> tils.
>>>> java:493)
>>>>    at
>>>> org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(Proper 
>>>> t
>>>> y
>>>> U
>>>> tils.
>>>> java:428)
>>>>    at
>>>> org.apache.commons.beanutils.PropertyUtils.getNestedProperty(Propert 
>>>> y
>>>> U
>>>> t
>>>> ils.j
>>>> ava:770)
>>>>    at
>>>> org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils 
>>>> .
>>>> j
>>>> a
>>>> va:80
>>>> 1)
>>>>    at
>>>> org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:
>>>> 881)
>>>>    at
>>>> org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
>>>>    at
>>>> org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
>>>>    at
>>>> org.apache.struts.action.RequestProcessor.processPopulate(RequestPro 
>>>> c
>>>> e
>>>> s
>>>> sor.j
>>>> ava:821)
>>>>    at
>>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor.j 
>>>> a
>>>> v
>>>> a
>>>> :254)
>>>>    at
>>>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:
>>>> 1482)
>>>>    at
>>>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java: 
>>>> 525)
>>>>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
>>>>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>>>>    at
>>>> org.apache.catalina.core.StandardWrapperValve.invokeServletService(S 
>>>> t
>>>> a
>>>> n
>>>> dardW
>>>> rapperValve.java:720)
>>>>    at
>>>> org.apache.catalina.core.StandardWrapperValve.access$000(StandardWra 
>>>> p
>>>> p
>>>> e
>>>> rValv
>>>> e.java:118)
>>>>    at
>>>> org.apache.catalina.core.StandardWrapperValve$1.run(StandardWrapperV 
>>>> a
>>>> l
>>>> v
>>>> e.jav
>>>> a:278)
>>>>    at java.security.AccessController.doPrivileged(Native Method)
>>>>    at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapper 
>>>> V
>>>> a
>>>> l
>>>> ve.ja
>>>> va:274)
>>>>    at
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.ja 
>>>> v
>>>> a
>>>> :
>>>> 505)
>>>>    at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContext 
>>>> V
>>>> a
>>>> l
>>>> ve.ja
>>>> va:212)
>>>>    at
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.ja 
>>>> v
>>>> a
>>>> :
>>>> 505)
>>>>    at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve. 
>>>> j
>>>> a
>>>> v
>>>> a:203
>>>> )
>>>>    at
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.ja 
>>>> v
>>>> a
>>>> :
>>>> 505)
>>>>    at
>>>> com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProc 
>>>> e
>>>> s
>>>> s
>>>> or.ja
>>>> va:157)
>>>>    at com.iplanet.ias.web.WebContainer.service(WebContainer.java:598)
>>>> Caused by: java.lang.NullPointerException
>>>>    at
>>>> com.mysite.bean.SoldProperty.getExclusiveSold(SoldProperty.java:573)
>>>>
>>>>
>>>> Here is the relevant code:
>>>>
>>>>
>>>>    protected SoldProperty[] ExclusiveSold; 
>>>>    protected SoldProperty[] BuyerSold;     
>>>>
>>>> /**
>>>>    Set the Value of ExclusiveSold to ExclusiveSoldValue
>>>>    
>>>>    @param   ExclusiveSoldValue The value of the variable ExclusiveSold
>>>> in the Object
>>>>    */
>>>>    public void setExclusiveSold (SoldProperty[] ExclusiveSoldValue) {
>>>>            ExclusiveSold = ExclusiveSoldValue;
>>>>            }
>>>>    /**
>>>>    Get the Value of ExclusiveSold
>>>>    
>>>>    @return The Value of ExclusiveSold
>>>>    */
>>>>    public SoldProperty[] getExclusiveSold (){
>>>>            return ExclusiveSold;
>>>>            }       
>>>>    
>>>>    /**
>>>>    Set the Value of ExclusiveSold to ExclusiveSoldValue
>>>>    
>>>>    @param   ExclusiveSoldValue The value of the variable ExclusiveSold
>>>> in the Object
>>>>    */
>>>>    public void setExclusiveSold (int index, SoldProperty
>>>> ExclusiveSoldValue) {
>>>>            ExclusiveSold[index] = ExclusiveSoldValue;
>>>>            }
>>>>    /**
>>>>    Get the Value of ExclusiveSold
>>>>    
>>>>    @return The Value of ExclusiveSold
>>>>    */
>>>>    public SoldProperty getExclusiveSold (int index){
>>>>            return ExclusiveSold[index];
>>>>            }       
>>>>
>>>>    
>>>>    /**
>>>>    Set the Value of BuyerSold to BuyerSoldValue
>>>>    
>>>>    @param   BuyerSoldValue The value of the variable BuyerSold in the
>>>> Object
>>>>    */
>>>>    public void setBuyerSold (SoldProperty[] BuyerSoldValue) {
>>>>            BuyerSold = BuyerSoldValue;
>>>>            }
>>>>    /**
>>>>    Get the Value of BuyerSold
>>>>    
>>>>    @return The Value of BuyerSold
>>>>    */
>>>>    public SoldProperty[] getBuyerSold (){
>>>>            return BuyerSold;
>>>>            }       
>>>>    
>>>>    /**
>>>>    Set the Value of BuyerSold to BuyerSoldValue
>>>>    
>>>>    @param   BuyerSoldValue The value of the variable BuyerSold in the
>>>> Object
>>>>    */
>>>>    public void setBuyerSold (int index, SoldProperty BuyerSoldValue) {
>>>>            BuyerSold[index] = BuyerSoldValue;
>>>>            }
>>>>    /**
>>>>    Get the Value of BuyerSold
>>>>    
>>>>    @return The Value of BuyerSold
>>>>    */
>>>>    public SoldProperty getBuyerSold (int index){
>>>>            return BuyerSold[index];
>>>>            }       
>>>>
>>>> And the jsp code:
>>>>
>>>> <c:forEach var="exclusive" items="${SoldProperty.exclusiveSold}"
>>>> varStatus="status">
>>>>            <tr>
>>>>                    <td bgcolor="#E0E8F5" align="center"><c:out
>>>> value="${exclusive.soldDate}"/></td>
>>>>                    <td bgcolor="#E0E8F5"><html-el:hidden
>>>> property="exclusiveSold[${status.index}].soldId"/><a
>>>> href="Marketing.app?action=edit&id=<c:out
>>>> value="${exclusive.mlsNumber}"/>"><c:out
>>>> value="${exclusive.streetNumber}"/>
>>>> <c:out value="${exclusive.street}"/> <c:out
>>>> value="${exclusive.aptNumber}"/></a></td>
>>>>                    <td bgcolor="#E0E8F5" align="center"><c:out
>>>> value="${exclusive.price}"/></td>
>>>>                    <td bgcolor="#E0E8F5"
>>>> align="center"><html-el:checkbox
>>>> property="exclusiveSold[${status.index}].showListing" /></td>
>>>>                    <td bgcolor="#E0E8F5"
>>>> align="center"><html-el:checkbox
>>>> property="exclusiveSold[${status.index}].showPrice" /></td>
>>>>                    <td bgcolor="#E0E8F5"
>>>> align="center"><html-el:checkbox
>>>> property="exclusiveSold[${status.index}].showAptNumber" /></td>
>>>>                    <td bgcolor="#E0E8F5" align="center"><html-el:text
>>>> property="exclusiveSold[${status.index}].displayPrice" size="8"
>>>> /></td>
>>>>            </tr>
>>>>            </c:forEach>
>>>>
>>>>
>>>> <c:forEach var="buyer" items="${SoldProperty.buyerSold}"
>>>> varStatus="status">
>>>>            <tr>
>>>>                    <td bgcolor="#E0E8F5" align="center"><c:out
>>>> value="${buyer.soldDate}"/></td>
>>>>                    <td bgcolor="#E0E8F5"><html-el:hidden
>>>> property="buyerSold[${status.index}].soldId"/><a
>>>> href="soldProperty.app?action=edit&id=<c:out
>>>> value="${buyer.soldId}"/>"><c:out value="${buyer.streetNumber}"/>
>>>> <c:out
>>>> value="${buyer.street}"/> <c:out
>>>> value="${buyer.aptNumber}"/></a></td>
>>>>                    <td bgcolor="#E0E8F5" align="center"><c:out
>>>> value="${buyer.price}"/></td>
>>>>                    <td bgcolor="#E0E8F5"
>>>> align="center"><html-el:checkbox
>>>> property="buyerSold[${status.index}].showListing" /></td>
>>>>                    <td bgcolor="#E0E8F5"
>>>> align="center"><html-el:checkbox
>>>> property="buyerSold[${status.index}].showPrice" /></td>
>>>>                    <td bgcolor="#E0E8F5"
>>>> align="center"><html-el:checkbox
>>>> property="buyerSold[${status.index}].showAptNumber" /></td>
>>>>                    <td bgcolor="#E0E8F5" align="center"><html-el:text
>>>> property="buyerSold[${status.index}].displayPrice" size="8" /></td>
>>>>            </tr>
>>>>            </c:forEach>
>>>>
>>>>
>>>>
>>>> Any ideas why I'm getting this error?  And how to fix it?
>>>>
>>>>    Thanks,
>>>>    Nathan Ewing
>>>>
>>>>
>>>>
>>>> -------------------------------------------------------------------- 
>>>> -
>>>> 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