--- Maxx <[EMAIL PROTECTED]> wrote:
>   Map<String, List<MyBean>> myList;
> 
> ... where the class MyBean is something like:
> 
> class MyBean {
>   private Long id;
>   private String name;
>   // + appropriate getters/setters
> }
> 
> What I'd like is setting each value back through some <s:textfield />
> using the particular OGNL as described here:
> http://struts.apache.org/2.x/docs/type-conversion.html
> For generating all the appropriate <s:textfield /> I have two nested
> iterators; first one for the Map, second one for the List. But how do
> I do with my OGNL expressions to be put in the value="" attribute of
> the text fields.
> 
> I'm guessing it's something like:
>   myList['mapKey'](beanId)
> but I could not find how to configure it properly because it seems
> there's a conflict between how to declare the Map conversion & how to
> declare the pseudo-collection index for a single myList[...] value
> 
> # conf. for the Map
> Key_myList=String
> Element_myList=java.util.Map
> CreateIfNull_myList=true
> 
> # conf. for the Map...??? how to indicate here it's a value in the
> map, not the map itself!!?
> KeyProperty_myList=id
> Element_myList=com.mycompany.somepackage.www.bean.MyBean
> CreateIfNull_myList=true

AFAIK until you can name it you can't reference it: if you have a map with an
"anonymous" value there's no way to describe to the system how to handle it.

For example, my first S2 app had a fairly deeply nested structure for which
the textfields looked similar to this:

<s:textfield name="aMap[%{#result.id}].%{which}[0].foo" .../>

Here the value of "which" names a list (the index is hard-coded here to keep
it simple), which is a member of the object held in the map with an ID-like
index.

The conversion file (more or less, and I'm not even sure all of it is
necessary) looks like this:

Key_aMap=java.lang.Long
Element_aMap=foo.bar.Baz
CreateIfNull_aMap=true

# Here I was just checking "Collection" v. "Element"--this was a long time
ago.
# In the textfield above "%{which}" would be replaced by the string "aThing"
or "anotherThing".
Collection_aThing=com.over.wtf.DataType
Element_anotherThing=com.over.wtf.DataType

I'm not sure the automagic generics support follows the entire chain of
definitions; if you don't have a conversion file at all you'll probably end
up with an exception setting the MyBean values with a String[].

(Caveat: this got edited over a longer period of time than I originally
anticipated so may not be totally coherent, but that's par for the course for
me.)

Dave


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

Reply via email to