> > At runtime I need to get a list of /all/ the actions that are defined in > > Struts. I'd rather not extract them directly from the conf file(s) > > unless it's absolutely necessary, but I don't (readily) see an API for > > doing this so I might be forced into it. > > > > It seems a bit difficult but... It seems that ModuleConfigImpl has a > list of ActionConfig, that is what you need. > The problem is that only ActionServlet can access to ModuleConfig. But > you have to subclass ModuleConfigImpl to get the actionConfigList field, > because it seems that there is no getter method. > I hope this is a good hint. > Ciao > Antonio
This hint pointed me in the right direction. In case anyone is interested, this is how I did it: - Subclass ActionServlet - Override process() - Inside process, add the following code: if(this.getServletContext().getAttribute("actionList") == null) { String actionList = new String(); ModuleConfig theConfig = this.getModuleConfig(request); ActionConfig[] actionConfigurations = theConfig.findActionConfigs(); for(int i = 0; i < actionConfigurations.length; i++) { ActionConfig thisAction = actionConfigurations[i]; actionList += thisAction.getPath(); } this.getServletContext().setAttribute("actionList", actionList); } super.process(request, response); What this does is create a new context parameter called "actionList". It's a "/" separated string of the action paths. It's only called if the parameter doesn't exist, so if you're already using a parameter by that name it won't clobber it, and so that it is only called once (the first time any action is called). Of course, you now have to update your application descriptor to use your new actionservlet instead of the struts one. This is a quick and dirty proof-of-concept, but it is functional. If anyone has a better idea, please share. Cheers, and thanks Antonio! Brantley --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]