You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Pierre Henry <he...@hta-bi.bfh.ch> on 2004/01/10 12:10:06 UTC

populate indexed property : skipping read-only property

Hi all,

I am trying to use an indexed property following the howto 
(http://www.apache.org/~sraeburn/maven/faqs/indexedprops.html). I also 
read many many related mails on this list, but... :(

I have no problem with the getters, but unfortunately, I can not make it 
work to set the values of the indexed property.

The property is a simple String. The number of  them is completely dynamic.

The output of tomcat seems to indicate that the BeanUtils.populate does 
not "see" my indexed setter. Here is the output :
...
[DEBUG] RequestProcessor - - Populating bean properties from this request
[DEBUG] BeanUtils - 
-BeanUtils.populate(singha.actions.ReservationStep3Form@114e
f62, {customerCategoryId[2]=[Ljava.lang.String;@1703484, 
customerPhone=[Ljava.la
ng.String;@187e184, customerCategoryId[0]=[Ljava.lang.String;@1e6cf07, 
customerL
astName=[Ljava.lang.String;@2209db, 
customerFirstName=[Ljava.lang.String;@b53b32
, customerAddress=[Ljava.lang.String;@41647f, 
customerCategoryId[1]=[Ljava.lang.
String;@12cd736, customerEmail=[Ljava.lang.String;@e51bda})
[DEBUG] BeanUtils - -Skipping read-only property
[DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
[DEBUG] BeanUtils - -Skipping read-only property
[DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
[DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
[DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
[DEBUG] BeanUtils - -Skipping read-only property
[DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
[DEBUG] RequestProcessor - - Validating input form properties
[DEBUG] RequestProcessor - - Looking for Action instance for class 
singha.actions.ReservationStep3Action
...

Here is a snippet of my ReservationStep3Form FormBean :
   
    private ArrayList customerCategoryIds = new ArrayList();
   
    public void reset(ActionMapping mapping,
              HttpServletRequest request)
    {
      ...
      customerCategoryIds = new ArrayList();
    }

    public String getCustomerCategoryId(int index){
      System.out.println("getCustomerCategoryId");
      if(index < customerCategoryIds.size()) return 
(String)customerCategoryIds.get(index);
      return null;
    }
   
    public void setCustomerCategroryId(int index, String value){
      if(index >= customerCategoryIds.size()) 
customerCategoryIds.ensureCapacity(index+1);
      customerCategoryIds.set(index,  value);
    }

Here is the relevant part of the JSP :
I have a list of positions object from the action. I want to add some 
info to these positons, and in the same form get some infos about the 
customer (name...).

<html:form action="reservationStep3">
<logic:iterate id="position" name="positions" indexId="index">
    <html:select property='<%= "customerCategoryId[" + index + "]" %>' >
         <logic:iterate id="price" name="position" property="value">
               <html:option value="price.customerCategoryId" 
style="text-align:right">
                   <bean:write name="price" 
property="customerCategory.name" /> -
                   <bean:write name="price" property="formattedValue"/>
               </html:option>
         </logic:iterate>             
   </html:select>
</logic:iterate>
//other fields (customer name, address etc...)

This JSP generates the right html like :

<select name="customerCategoryId[0]" >
	<option value="123" >Normal - $14.00</option>
	...
</select>

DO I have to add something to struts-config ? Or what do I have to do, what do I do wrong  ? Any help is really welcome !

Pierre Henry




---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: populate indexed property : skipping read-only property - SOLVED

Posted by Pierre Henry <he...@hta-bi.bfh.ch>.
Pierre Henry wrote:

> Hi all,
>
> I am trying to use an indexed property following the howto 
> (http://www.apache.org/~sraeburn/maven/faqs/indexedprops.html). I also 
> read many many related mails on this list, but... :(
>
> I have no problem with the getters, but unfortunately, I can not make 
> it work to set the values of the indexed property.
>
> The property is a simple String. The number of  them is completely 
> dynamic.
>
> The output of tomcat seems to indicate that the BeanUtils.populate 
> does not "see" my indexed setter. Here is the output :
> ...
> [DEBUG] RequestProcessor - - Populating bean properties from this request
> [DEBUG] BeanUtils - 
> -BeanUtils.populate(singha.actions.ReservationStep3Form@114e
> f62, {customerCategoryId[2]=[Ljava.lang.String;@1703484, 
> customerPhone=[Ljava.la
> ng.String;@187e184, customerCategoryId[0]=[Ljava.lang.String;@1e6cf07, 
> customerL
> astName=[Ljava.lang.String;@2209db, 
> customerFirstName=[Ljava.lang.String;@b53b32
> , customerAddress=[Ljava.lang.String;@41647f, 
> customerCategoryId[1]=[Ljava.lang.
> String;@12cd736, customerEmail=[Ljava.lang.String;@e51bda})
> [DEBUG] BeanUtils - -Skipping read-only property
> [DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
> [DEBUG] BeanUtils - -Skipping read-only property
> [DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
> [DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
> [DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
> [DEBUG] BeanUtils - -Skipping read-only property
> [DEBUG] ConvertUtils - -Convert string 's' to class 'java.lang.String'
> [DEBUG] RequestProcessor - - Validating input form properties
> [DEBUG] RequestProcessor - - Looking for Action instance for class 
> singha.actions.ReservationStep3Action
> ...
>
> Here is a snippet of my ReservationStep3Form FormBean :
>      private ArrayList customerCategoryIds = new ArrayList();
>      public void reset(ActionMapping mapping,
>              HttpServletRequest request)
>    {
>      ...
>      customerCategoryIds = new ArrayList();
>    }
>
>    public String getCustomerCategoryId(int index){
>      System.out.println("getCustomerCategoryId");
>      if(index < customerCategoryIds.size()) return 
> (String)customerCategoryIds.get(index);
>      return null;
>    }
>      public void setCustomerCategroryId(int index, String value){
>      if(index >= customerCategoryIds.size()) 
> customerCategoryIds.ensureCapacity(index+1);
>      customerCategoryIds.set(index,  value);
>    }
>
> Here is the relevant part of the JSP :
> I have a list of positions object from the action. I want to add some 
> info to these positons, and in the same form get some infos about the 
> customer (name...).
>
> <html:form action="reservationStep3">
> <logic:iterate id="position" name="positions" indexId="index">
>    <html:select property='<%= "customerCategoryId[" + index + "]" %>' >
>         <logic:iterate id="price" name="position" property="value">
>               <html:option value="price.customerCategoryId" 
> style="text-align:right">
>                   <bean:write name="price" 
> property="customerCategory.name" /> -
>                   <bean:write name="price" property="formattedValue"/>
>               </html:option>
>         </logic:iterate>               </html:select>
> </logic:iterate>
> //other fields (customer name, address etc...)
>
> This JSP generates the right html like :
>
> <select name="customerCategoryId[0]" >
>     <option value="123" >Normal - $14.00</option>
>     ...
> </select>
>
> DO I have to add something to struts-config ? Or what do I have to do, 
> what do I do wrong  ? Any help is really welcome !
>
> Pierre Henry
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: struts-user-help@jakarta.apache.org
>
>
Sorry every body. The problem was only that I wrote 
setCustomerCategroryId  instead of category... and was too tired to even 
notice that...

Sorry, I hope nobody spent time on this...

Pierre Henry


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org