Are you sure they do? Or is it just recognizing that it's a Collection and treating it appropriately for a Collection of Objects? (*Chris*)
On Wed, Aug 20, 2008 at 10:16 AM, Jukka Välimaa <[EMAIL PROTECTED]>wrote: > Sounds reasonable, thanks for the answer. But why do the generics used in > java collections work with type conversion, and generics in my custom class > won't? > > On Wed, Aug 20, 2008 at 7:06 PM, Chris Pratt <[EMAIL PROTECTED] > >wrote: > > > My bet is that, because Struts uses run-time introspection to determine > how > > to pass the parameters, and the new Java Generics use type erasure to > > ensure > > backward portability, what Struts see's isn't your generic type, it's an > > Object. So it passes in the unconverted value that it got from > > Request.getParameters(), which is a String Array. > > (*Chris*) > > > > On Wed, Aug 20, 2008 at 8:17 AM, Jukka Välimaa <[EMAIL PROTECTED] > > >wrote: > > > > > Hi all, > > > > > > I have the following problem which I think is caused by Struts 2 type > > > conversion. > > > > > > I have a class I use to wrap a map for easier interface with view: > > > > > > public class ObjectWeekHandler<T> { > > > private Map<WeekDayEntry, T> weekDayObjects = new > > HashMap<WeekDayEntry, > > > T>(); > > > > > > public Map<WeekDayEntry, T> getWeekDayObjects() { > > > return weekDayObjects; > > > } > > > > > > public void setWeekDayObjects(Map<WeekDayEntry, T> weekDayObjects) { > > > this.weekDayObjects = weekDayObjects; > > > } > > > > > > public T getEvenMonObject() { > > > return weekDayObjects.get(WeekDayEntry.EVEN_MONDAY); > > > } > > > > > > public void setEvenMonObject(T evenMonObject) { > > > weekDayObjects.put(WeekDayEntry.EVEN_MONDAY, evenMonObject); > > > } > > > > > > [...] > > > > > > I use this class in my action class to get strings for various > weekdays: > > > private ObjectWeekHandler<String> weekDayTruckIds = new > > > ObjectWeekHandler<String>(); > > > > > > public ObjectWeekHandler<String> getWeekDayIds() { > > > return weekDayIds; > > > } > > > > > > When I send the request, the parameters are of this type: > > > weekDayIds.evenMonObject=-1 > > > > > > If I understand the workings of Struts 2 type conversion correctly, it > > > should call getWeekDayIds.setEvenMonObject(type converted parameter > > value). > > > This is indeed what happens, but instead of setting the parameter as > > > String, > > > it is set as String array. The same thing happens if I parameterize > > > weekDayIds as weekDayIds<Long>. > > > > > > I have an ugly workaround in place- I cast the supposed String value I > > get > > > from getEvenMonObject into Object and then into String[], and get the > > first > > > value. It works, but I certainly don't like it. Does anyone have an > idea > > > what might be wrong and how to fix it? > > > > > >