I was able to find a solution by creating a second converter, PlaylistsConverter, which returns a List of Playlists instead:
public Object convertFromString(Map arg0, String[] arg1, Class arg2) { if (arg1.length > 0 && arg1[0].trim() != "") { List<Playlist> playlists = new ArrayList<Playlist>(); try { for (int i = 0; i < arg1.length; i++) { if (arg1[i] != null && !arg1[i].trim().equals("")) { playlists.add((Playlist) repositoryAppService.retrieveContentById(Long.valueOf(arg1[i]))); } } return playlists; } catch (Exception e) { throw new TypeConversionException(e); } } else { return null; } } This serves my purposes, but I would still prefer to reuse PlaylistConverter, which is used by Playlists themselves to handle what we call source Playlists: @Override public Object convertFromString(Map arg0, String[] arg1, Class arg2) { if (arg1.length > 0 && arg1[0].trim() != "") { List<Playlist> playlists = new ArrayList<Playlist>(); try { for (int i = 0; i < arg1.length; i++) { if (arg1[i] != null && !arg1[i].trim().equals("")) { playlists.add((Playlist) repositoryAppService.retrieveContentById(Long.valueOf(arg1[i]))); } } return playlists; } catch (Exception e) { throw new TypeConversionException(e); } } else { return null; } } I'm happy to provide additional code, but I don't want to inundate you with chaff... can you give me some idea of the wheat you are looking for? Thanks, ~~Scott On Wed, Jan 12, 2011 at 7:08 PM, <stanl...@gmail.com> wrote: > Can we see your related files? > > On Wed, Jan 12, 2011 at 3:43 PM, Scott Koenig <scott.l.koe...@gmail.com > >wrote: > > > Hello, > > > > In my company's internal CMS, we are implementing two new asset types, > > Videos and Playlists (collections of Videos). In the Video UI, the user > > designates which Playlists are to be associated with a given Video, and > > these values are posted on save via an array called "playlists" which > > contains the UIDs of each Playlist. These are represented as an > > ArrayList<Playlist> in the Video POJO. > > > > We have implemented a PlaylistConverter to convert each String UID to a > > Playlist instance (and back), and going off of > > > > > http://struts.apache.org/2.1.8/docs/type-conversion.html#TypeConversion-CollectionandMapSupport > > , > > added Element_playlists=[converterpackage].PlaylistConverter to > > Video-conversion.properties. > > > > Save was not committing and there seemed to be some conversion error, so > I > > stepped through the conversion process to try and determine what was > going > > wrong. Everything seems to be fine at the Collection level; it properly > > determines that the toType of the collection is List and the memberType > is > > Playlist. However, when XWorkConverter.getConverter() tries to find the > > converter for the individual members, even though Element_playlists=class > > [converterpackage].PlaylistConverter is present in the mappings, the > > property String passed in is still "playlists" instead of > > "Element_playlists" and thus it does not hook up the playlist ID with the > > converter and falls back to the default converter (which cannot handle it > > and is what is raising the error). > > > > Any guidance as to what could be going wrong here would be greatly > > appreciated. > > > > Thank you very much, > > ~~Scott > > > > > > PS--If it's useful, our system depends on the following libraries: > > > > ognl-3.0.jar > > struts2-core-2.1.8.1.jar > > xwork-core-2.1.6.jar > > >