struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ezequiel Puig" <e.p...@vivacances.fr>
Subject [s2] Collection, array and <s:url> tag.
Date Wed, 06 Jun 2007 08:26:55 GMT
Hi,

 

I have been using struts 2 since a while and there is some things about
the <s:url> tag i don't understant.

 

Let's say we have an array in our action (with the getters and setters):

 

    private String[] myArray;

  

    public String[] getMyArray() {

        return myArray;

    }

    public void setMyArray(String[] myArray) {

        this.myArray = myArray;

    }

 

and that in our action, we do something to initializate the array:

 

    String[] arr = new String[3]; 

    arr[0] = "Aa";

    arr[1] = "Bb";

    arr[2] = "Cc";

 

Now, if in our JSP we use the <s:url> tag:

 

<a href="<s:url includeParams="none" action="TestUrlArray.action ">

                    <s:param name="myArray" value="myArray" />

             </s:url>" >Use Link

</a>

 

we can see that the created url is: 

 

TestUrlArray.action?myArray=Aa&myArray=Bb&myArray=Cc

 

Also, in the destination action, we are able to recover the information
from the variable "myArray" if we have defined something like "private
String[] myArray".

 

So for, so good.

 

Now, let's see the Collections:

 

In the action we will have:

 

    private Collection<String> myCollection = new ArrayList<String>(); 

 

    public Collection <String> getMyCollection () {

        return myCollection;

    }

    public void setMyList(Collection <String> myCollection) {

        this.myCollection = myCollection;

    }

 

we initialize the collection:

 

    Collection<String> col = new ArrayList<String>();

    col.add("Aa");

    col.add("Bb");

    col.add("Cc");

    setMyCollection(col);

 

Finally, we use the <s:url> tag:

 

<a href="<s:url includeParams="none" action="TestUrlArray.action ">

                    <s:param name="myCollection" value="myCollection" />

             </s:url>" >Use Link

</a>

 

Here, the created link looks like:
TestUrlArray.action?myCollection=[Aa,+Bb,+Cc]

 

But, if we try to recover the collection in the destination action
(where offcourse we have defined "Collection<String> col = new
ArrayList<String>();" ), we will see that we recover a collection of
only one element, and that this element is our old collection (the one
with 3 elements).

 

Now, it's time for questions:

 

1)       Is it possible to manipulate arrays with the s2 tags ? (by
manipulate, i mean create a new array, add an element to an existing
array, remove an element, etc.)

2)       Is it possible to manipulate collections with the s2 tags ?
(same meaning to manipulate)

3)       Is there a work-arround to recover a Collection not as a new
collection of one element that contains a collection but as a new
collection that is like the collection we passed ?

 

 

Well, any ideas will be reallly wellcome :-)

 

 

 

 

 

 

 

 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message