Solved (with the help of one of my colleagues)! Simple error. I hadnt taken into account the fact that the order of attributes matters.
Instead of: <forward name="engineer-success" path="/workSchedule.do?projectId=giantRobotSpaceLaser" className="com.unist.plot.EvilActionForward"/> I needed: <forward className="com.unist.plot.EvilActionForward" name="engineer-success" path="/workSchedule.do?projectId=giantRobotSpaceLaser"/> ...now I dont suppose anyone knows how I can make it use my forward class for all the local forwards without having to explicitly clutter up my config file with a million className="com.unist.plot.EvilActionForward"s? -----Original Message----- From: Andrew Hill [mailto:[EMAIL PROTECTED] Sent: Wednesday, 3 September 2003 13:00 To: Struts Subject: Using a custom ActionForward subclass Im trying to make use of my own subclass of ActionForward (or subclass of ForwardingActionForward to be precise). Ive set the type in the <global-forwards> appropriately: <global-forwards type="com.unist.plot.EvilActionForward"> That seems to work ok. (Ive not actually tested that its really instantiating the subclass for the global forwards yet, just taking it on faith!) At this stage the EvilActionForward doesnt implement any methods of its own, its just extending org.apache.struts.action.ForwardingActionForward. I need to use this class in the local action forwards. Im assuming that these won't automatically pick up the type I set for the global-forwards. Is this the case? Ive tried setting the className attribute but I get a nasty stacktrace when the ActionServlet tries to parse struts-config.xml <action path="/loginAction" type="com.unist.plot.QuoVadis" name="loginForm" scope="request" validate="false"> <forward name="manager-success" path="/diabolicalPlanOfTheWeek.do" className="com.unist.plot.EvilActionForward"/> <forward name="engineer-success" path="/workSchedule.do?projectId=giantRobotSpaceLaser" className="com.unist.plot.EvilActionForward"/> <forward name="janitor-success" path="/cageCleaningSchedule.do?projectId=clonedCarnivorousSheep" className="com.unist.plot.EvilActionForward"/> <forward name="developer-success" path="/workSchedule.do?projectId=windows" className="com.unist.plot.EvilActionForward"/> <forward name="failure" path="/personaNonGrata.do"/> </action> However it doesnt seem to like the 'className' attribute in the forwards one little bit. (Removing that attribute makes everything work of course). The stack trace that Im getting is pasted below. Any idea what Im doing wrong? [2003-09-03 12:32:57,860] [ERROR:Digester] [main] End event threw exception java.lang.IllegalArgumentException: argument type mismatch at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 ) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:252) at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256) at org.apache.commons.digester.Rule.end(Rule.java:276) at org.apache.commons.digester.Digester.endElement(Digester.java:1058) at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1403) at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator .java:1480) at org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanne r.java:1809) at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XM LDocumentScanner.java:1182) at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner. java:381) at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081) at org.apache.commons.digester.Digester.parse(Digester.java:1548) at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.j ava:1006) at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:9 55) at org.apache.struts.action.ActionServlet.init(ActionServlet.java:470) at javax.servlet.GenericServlet.init(GenericServlet.java:258) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:91 6) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:808) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java: 3266) at org.apache.catalina.core.StandardContext.start(StandardContext.java:3395) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:785) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:454) at org.apache.catalina.core.StandardHost.install(StandardHost.java:714) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:324) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:389) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:232) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor t.java:155) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1131) at org.apache.catalina.core.StandardHost.start(StandardHost.java:614) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343) at org.apache.catalina.core.StandardService.start(StandardService.java:388) at org.apache.catalina.core.StandardServer.start(StandardServer.java:506) at org.apache.catalina.startup.Catalina.start(Catalina.java:781) at org.apache.catalina.startup.Catalina.execute(Catalina.java:681) at org.apache.catalina.startup.Catalina.process(Catalina.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 ) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243) [2003-09-03 12:32:57,920] [ERROR:ActionServlet] [main] Parsing error processing resource path java.lang.IllegalArgumentException: argument type mismatch at org.apache.commons.digester.Digester.createSAXException(Digester.java:2540) at org.apache.commons.digester.Digester.createSAXException(Digester.java:2566) at org.apache.commons.digester.Digester.endElement(Digester.java:1061) at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1403) at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator .java:1480) at org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanne r.java:1809) at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XM LDocumentScanner.java:1182) at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner. java:381) at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081) at org.apache.commons.digester.Digester.parse(Digester.java:1548) at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.j ava:1006) at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:9 55) at org.apache.struts.action.ActionServlet.init(ActionServlet.java:470) at javax.servlet.GenericServlet.init(GenericServlet.java:258) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:91 6) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:808) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java: 3266) at org.apache.catalina.core.StandardContext.start(StandardContext.java:3395) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:785) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:454) at org.apache.catalina.core.StandardHost.install(StandardHost.java:714) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:324) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:389) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:232) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor t.java:155) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1131) at org.apache.catalina.core.StandardHost.start(StandardHost.java:614) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343) at org.apache.catalina.core.StandardService.start(StandardService.java:388) at org.apache.catalina.core.StandardServer.start(StandardServer.java:506) at org.apache.catalina.startup.Catalina.start(Catalina.java:781) at org.apache.catalina.startup.Catalina.execute(Catalina.java:681) at org.apache.catalina.startup.Catalina.process(Catalina.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 ) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

