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]