Ok, im not sure how exactly you are using it but this is how I tend to do it.

In your load() action, you hit the db and generate some object for each row and put them into your vector. Your jsp loops over all of the objects in the vector and displays <input>s for each object (row)

Sometimes, you may generate a row without a serverside call (javascript) then post the form. In this case the set(index, object) of your vector will cause an IndexOutOfBoundsException. For this case, I use a LazyList and a factory which creates an empty object at the new index, then struts can populate the object with the <input> values.

http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/org/apache/commons/collections/list/LazyList.html

Balazs Michnay wrote:
Struts does not seem to accept a Vector-typed field as a property value. The 
form simply fails to load.
I'd happily use LazyList and a Factory together instead of a Vector if it's 
easy to implement...
First I wanted to get it working with Vector, then I can easily switch to a 
different container.

------------------------------------
In my JSP:
<html:select property="vizsgalatEsOrvos[0]">
------------------------------------
In my bean:
private Vector vizsgalatEsOrvos;

    public Vector getVizsgalatEsOrvos() {
        return vizsgalatEsOrvos;
    }

    public void setVizsgalatEsOrvos(Vector vizsgalatEsOrvos) {
        this.vizsgalatEsOrvos = vizsgalatEsOrvos;
    }
------------------------------------
Instantiating my Vector in the constructor won't help...
Struts should call

myForm.getMyVector().set(0, ?)

Do I need to implement this metod? Do I need to write my own setters/getters to 
do this?
How can I do this exactly?
Thanks,

MB

----- Original Message ----
From: Lance <[EMAIL PROTECTED]>
To: user@struts.apache.org
Sent: Monday, April 16, 2007 12:12:00 PM
Subject: Re: Form data to Vector



Lance wrote:
Sorry, it helps if i read your question fully.

The way to do this is to name your html form elements using in the struts (BeanUtils) conventions If you have a form element named "myVector[3]" then struts will call myForm.getMyVector().set(3, ?)

It is sometimes easiest to use the struts nested tags to do this

<nested:iterate  property="myVector">
   <nested:text property="name" />
   <nested:text property="age" />
</nested:iterate>

will produce
<input type="text" name="myVector[0].name" value="" />
<input type="text" name="myVector[0].age" value="" />
<input type="text" name="myVector[1].name" value="" />
<input type="text" name="myVector[1].age" value="" />

If you are adding elements to the vector (instead of just editing existing vector elements), you might want to use a LazyList and a Factory together instead of a Vector, if you do, I can give you a bit more help if you need.

Lance.


Lance wrote:
Only way to get data into a Vector is by a scriptlet or in your action.
Struts 2's OGNL has a nice way of doing this but unfortunately with S1 we're left with dirty scriptlets in JSPs some of the time.

JSTL has a <c:forTokens /> that sometimes comes in handy where you provide a comma separated list of Strings and iterate through the elements.

Balazs Michnay wrote:
Thanks for the reply.
Yes, I know how to use the <logic:iterate> to display the elements of a Vector (or ArrayList), I just don't see how to put these values into the Vector. I mean if I have a Vector (or an ArrayList) property in my form bean, how do I put some of my form data into my bean property. Do I need to modify the setters/getters? There must be a way to do this... And yes, you're right, one the data are in the Vector, I can use <logic:iterate> to display them.
Thanks for your help,

Regards,

MB

----- Original Message ----
From: Martin Gainty <[EMAIL PROTECTED]>
To: Struts Users Mailing List <user@struts.apache.org>
Sent: Friday, April 13, 2007 3:45:17 PM
Subject: Re: Form data to Vector

Balazs

Take a look at
http://struts.apache.org/1.0.2/api/org/apache/struts/taglib/logic/package-summary.html you will see this example of implementing a vector via use of struts logic:iterate in your jsp

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%
  java.util.Vector vector = new java.util.Vector();
  vector.add(new Integer(12));
  vector.add(new Integer(5));
 %>
<logic:iterate id="myCollectionElement" collection="<%= vector %>">
 Do something with myCollectionElement
</logic:iterate>
This email message and any files transmitted with it contain confidential information intended only for the person(s) to whom this email message is addressed. If you have received this email message in error, please notify
the sender immediately by telephone or email and destroy the original
message without making a copy.  Thank you.

----- Original Message ----- From: "Balazs Michnay" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <user@struts.apache.org>
Sent: Friday, April 13, 2007 4:09 AM
Subject: Form data to Vector


Hi,

I have a form with two submit buttons. One should add the content of a text field to a Vector (which is in the form bean?), and the other one should point to another page that has access to the Vector values.
I'd like to know how to add form data to a Vector.
Any help would be appreciated.

Thanks a lot,

MB



__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]







__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]







__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to