Not sure how the dyna forms work, but you will need to check it generates a
getItem(int num) method - this will be called when populating
item[0].quantity ie getItem(0).setQuantity(value).

cheers,

David



|---------+---------------------------->
|         |           [EMAIL PROTECTED]|
|         |           net              |
|         |                            |
|         |           09/21/2004 12:50 |
|         |           PM               |
|         |           Please respond to|
|         |           "Struts Users    |
|         |           Mailing List"    |
|         |                            |
|---------+---------------------------->
  
>------------------------------------------------------------------------------------------------------------------------|
  |                                                                                    
                                    |
  |       To:       [EMAIL PROTECTED]                                                  
                               |
  |       cc:                                                                          
                                    |
  |       Subject:  Re: array of indexed html:text values not submitting               
                                    |
  
>------------------------------------------------------------------------------------------------------------------------|




I caught the DynaValidatorActionForm/DynaValidatorForm problem too after I
sent out the email and corrected it but it didn't help.

Here are a few lines of my JSP (which should explain the item/items
question):

<html:form method="post" action="saveEdit">
  <c:forEach var="item" items="${Items.map.items}">
    <html:text name="item" indexed="true" property="quantity" />
    <html:text name="item" indexed="true" property="price" />
  </c:forEach>
</html:form>

and here's the resulting html:

<form name="InventoryItems" method="post" action="/saveEdit">
  <input type="text" name="item[0].quantity" value="10">
  <input type="text" name="item[0].price" value="45.0">
  <input type="text" name="item[1].quantity" value="">
  <input type="text" name="item[1].price" value="225.0">
</form>

BTW: I tried updating my struts libs to 1.2.4 but that didn't help.  I
also put a String into the Items formbean and a corresponding textfield on
the page and that data passes through just fine.  It's only the item[x]
changes that fail.

Thanks,
Brady

> I see 2 things wrong right now - first is that you are using a
> DynaValidatorActionForm in your form-bean definition, but a
> DynaValidatorForm to cast the form in your loader and action code. This
> is not the cause of your problem I think, just something to watch out
for.
>
> The second is that I'm not entirely sure how those form variables got
> generated - based on what I see in your form-bean definition and in your
>   java code, the form property you are loading with this data is called
> "items" - the form is apparently generating input tags with "item[x].ID"
> (etc.) as the name, instead of "items[x].ID" (etc.) as the name. This
> would most explain why when you read the form data it is just reading
> the default instead of what you changed it to in the form.
>
> If neither of these helped, I would say that we also need to see a
> cut/paste of the JSP for the form, and a cut/paste of what gets
> generated to the brower.
>
> Matt
>
>
>
>
>
>
> [EMAIL PROTECTED] wrote:
>
>> Thanks for the reply.  Here are the relevant sections of LoadAction and
>> PersistAction:
>>
>> LoadAction:
>> public ActionForward execute(>>       ActionMapping mapping,
>>    ActionForm form,
>>    HttpServletRequest request,
>>    HttpServletResponse response)
>>    throws Exception {
>>
>>    DynaValidatorForm passForm = (DynaValidatorForm)form;
>>
>>    SimpleItem[] itemsArray = new SimpleItem[2];
>>
>>    itemsArray[0] = new SimpleItem();
>>    itemsArray[0].setQuantity("10");
>>    itemsArray[0].setPrice("45.0");
>>
>>    itemsArray[1] = new SimpleItem();
>>    itemsArray[1].setQuantity("");
>>    itemsArray[1].setPrice("225.0");
>>
>>    passForm.set( "items", itemsArray );
>>
>>    return mapping.findForward( "success" );
>> }
>>
>>
>> PersistAction:
>> public ActionForward execute(>>       ActionMapping mapping,
>>    ActionForm form,
>>    HttpServletRequest request,
>>    HttpServletResponse response)
>>    throws Exception {
>>
>>    DynaValidatorForm passForm = (DynaValidatorForm) form;
>>
>>    SimpleItem[] itemArray = (SimpleItem[])passForm.get("items");
>>
>>    return mapping.findForward(forward);
>> }
>>
>>
>>>>I'm working from the examples here:
>>>>http://www.developer.com/java/ejb/article.php/3321521
>>>>
>>>>I have an array of values that are sent to a page for editing.  The
>>>> page
>>>>is coming up ok with the correct text box values as seen below
>>>>(item[0].xxx, etc).  But when the form is submitted the changes don't
>>>>show up in PersistEditAction.  The form contains the original data just
>>>>as it was before the forward from LoadEditAction.
>>>>
>>>>Thanks for any help,
>>>>Brady
>>>>
>>>><input type="text" name="item[0].quantity" value="">
>>>><input type="text" name="item[0].price" value="785.0">
>>>>
>>>><input type="text" name="item[1].quantity" value="">
>>>><input type="text" name="item[1].price" value="225.0">
>>>>
>>>>
>>>><form-bean
>>>>        name="Items"
>>>>        type="org.apache.struts.validator.DynaValidatorActionForm">
>>>>        <form-property name="items"
>>>>                type="com.litriusgroup.cart.hibernate.SimpleItem[]" />
>>>></form-bean>
>>>>
>>>><action path="/Edit"
>>>>        type="com.stuff.struts.LoadEditAction"
>>>>        name="Items"
>>>>        scope="session"
>>>>        validate="false">
>>>>        <forward name="success" path="/admin/edit.jsp" />
>>>></action>
>>>><action path="/saveEdit"
>>>>        type="com.stuff.struts.PersistEditAction"
>>>>        name="Items"
>>>>        scope="session"
>>>>        validate="false">
>>>>        <forward name="success" path="/admin/edit.jsp" />
>>>>        <forward name="error" path="/admin/edit.jsp" />
>>>></action>
>>>>
>>>
>>>Is it possible you can post the relevant parts of LoadEditAction and
>>>PersistEditAction? Without those I don't think anybody will be able to
>>>help.
>>>
>>>Matt
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>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