I ran into a problem trying to subclass org.apache.struts.config.FormBeanConfig. Here is essentially what I was trying:
<form-bean name="myForm" dynamic="true" type="org.apache.struts.action.DynaActionForm" className="mycompany.MyFormBeanConfig"> . . . </form-bean> public class MyFormBeanConfig extends org.apache.struts.config.FormBeanConfig { . . . } The error I was getting was a "Cannot find message resources under key" exception. After removing the use of bean:message tags from my login page, I then saw the true error, "ClassCastException for mycompany.MyFormBeanConfig". This led me to the following code in ActionServlet.java: /** * Perform backwards-compatible configuration of an ActionFormBeans * collection, and expose it as a servlet context attribute (as was * used in Struts 1.0). Note that the current controller code does * not (and should not) reference this attribute for any reason. * * @param config The ApplicationConfig object for the default app * * @since Struts 1.1 * @deprecated Will be removed in a release after Struts 1.1. */ private void defaultFormBeansConfig(ApplicationConfig config) { FormBeanConfig fbcs[] = config.findFormBeanConfigs(); ActionFormBeans afb = new ActionFormBeans(); afb.setFast(false); for (int i = 0; i < fbcs.length; i++) { afb.addFormBean((ActionFormBean) fbcs[i]); } afb.setFast(true); getServletContext().setAttribute(Action.FORM_BEANS_KEY, afb); } Since this code blindly casts a FormBeanConfig to an ActionFormBean, I really needed to subclass from ActionFormBean instead of FormBeanConfig The documentation for the "form-bean" element in http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd <http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd> seems misleading in that it states that if you specify "className" for a form-bean" element, that the object must be a subclass of org.apache.struts.config.FormBeanConfig. Just a heads up in case anyone wants to use the <set-property> element with a <form-bean> element, and needs to subclass FormBeanConfig to do so.