All, > Now I just need to figure out how to copy one of these things. It > looks like "getMap" might be my best option. Any reason why this > might be a bad idea? 'cause this class is not clonable, and it > doesn't have a copy constructor, so this looks like the only > possibility.
To answer my own question, cloning a DynaActionForm (of which DynaValidatorForm is a subclass), the following unholy incantation is necessary: ModuleConfig mc = mapping.getModuleConfig(); FormBeanConfig fbc = mc.findFormBeanConfig(mapping.getName()); DynaActionForm clonedForm = (DynaActionForm)fbc.createActionForm(super.getServlet()); for(Iterator i=form.getMap().entrySet().iterator(); i.hasNext(); ) { Map.Entry entry = (Map.Entry)i.next(); clonedForm.set((String)entry.getKey(), entry.getValue()); } I tried simply instantiating a new DynaValidatorForm object and then running the loop shown above. Apparently, that doesn't initialize the form bean properly, and you get a NPE when calling set(). Calling "initialize" or "reset" on the bean also doesn't work: initialize() actually bombs with the same NPE as set() does, and reset() just doesn't do the trick. I'd love to hear any other ideas, but for now, this technique works and I couldn't make it work another way. -chris
signature.asc
Description: OpenPGP digital signature