I'd consider using some type of polymorphism, where all of these ActionForms share a common ancestor, with a known method, like addItem(object), that would act as a wrapper. Each ActionForm could then override addItem to call whatever list is appropriate.
ProductList extends ActionList addItem(addProductItem(o)) ; AddressList extends ActionList addItem(addAddressItem(o)); In your framework Action, you could then just cast as the ancestor method and call the overridden method ActionList actionList = (ActionList) form; actionList.addItem(o); If you are still interested in determining the ActionForm bean type, see the source of the processActionForm method for how the ActionServlet does it. If you need to call a method based on a parameter, see the source for DispatchAction in the Actions package, which calls a local method based on the string given as the parameter property. -- Ted Husted, Husted dot Com, Fairport NY USA. -- Custom Software ~ Technical Services. -- Tel +1 716 737-3463 -- http://www.husted.com/struts/ Stephen Hood wrote: > > I am trying to write a generic Action class that I can use with any > ActionForm to add an item to any collection property it may contain. For > example, if I had two ActionForms which each contain a collection (say > "AddressList" and "ProductList"), I could call the same Action with either > form, pass it the name of the collection, and have it add a new item to it, > passing control back to the calling View. > > In order to make it generic, I want the class to figure out the ActionForm > type specified in the mapping, recast the generic ActionForm as the proper > type, and then add another item to the collection indicated by a passed > request attribute. > > To dynamically determine the ActionForm type, I'm trying to use the > equivalent of ActionMapping.getFormClass(), which has been deprecated. The > suggested alternative is to use ActionMapping.getName() and then use it to > look-up the ActionFormBean. It seems the way to do this is to use > ActionFormBeans.findFormBean(String beanName). However, the following code > returns a null ActionFormBean. > > String formBeanName = mapping.getName(); > ActionFormBeans actionFormBeans = new ActionFormBeans(); > ActionFormBean theFormBean = actionFormBeans.findFormBean(formBeanName); > > I assume that my ActionFormBeans object itself is empty and I am not > creating or populating it properly, but I could not find details in the > Struts javadoc. > > Is this the correct approach? > > thanks for any suggestions, > --Steve