With an @Inject, the same way you can insert things like Strings or configuration values.
On Sat, Dec 18, 2010 at 3:19 PM, Chris Pratt <[email protected]>wrote: > How would Struts know to inject the helper class? It wouldn't be creating > it, it would conceivably be created either as a singleton (static or > otherwise) and those configuration and action mapping classes are critical > to the functioning of the method. I'd love to find a way to move this out > of my inheritance hierarchy, so do tell? > (*Chris*) > > On Sat, Dec 18, 2010 at 12:14 PM, Dave Newton <[email protected]> > wrote: > > > There's no reason it couldn't work in a "helper class", though; you can > > define arbitrary beans etc. inside the config. > > > > Dave > > > > On Sat, Dec 18, 2010 at 3:12 PM, Chris Pratt <[email protected] > > >wrote: > > > > > I assume what you want to do is turn an action name into a URL. Here's > > > what > > > I've used before, I'm not sure if there's a better way, but this was > > > adapted > > > from code inside struts. You could put it in your action's super class > > to > > > make it more reusable, but because of the injection required it > wouldn't > > > really work in a helper class. > > > (*Chris*) > > > > > > /** > > > * Struts: Inject a flag as to whether Dynamic Method Invocation is > > > enabled > > > * > > > * @param enable "true" to enable > > > */ > > > @Inject(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION) > > > public void setEnableDynamicMethodInvocation (String enable) { > > > enableDynamicMethodInvocation = Boolean.parseBoolean(enable); > > > } //setEnableDynamicMethodInvocation > > > > > > /** > > > * Struts: Inject the Struts Configuration for looking up the proper > > > Action > > > * > > > * @param configuration The Struts Configuration > > > */ > > > @Inject > > > public void setConfiguration (Configuration configuration) { > > > this.configuration = configuration; > > > } //setConfiguration > > > > > > /** > > > * Struts: Inject the Action Mapper > > > * > > > * @param actionMapper The Action Mapper > > > */ > > > @Inject > > > public void setActionMapper (ActionMapper actionMapper) { > > > this.actionMapper = actionMapper; > > > } //setActionMapper > > > > > > /** > > > * Process the Action Attribute > > > * > > > * @param ctx The Action Context > > > * @param stack The Value Stack > > > * @param action The action attribute value > > > * @param namespace The namespace attribute value > > > * @return The action attribute of the generated form > > > */ > > > protected String processAction (ActionContext ctx,ValueStack > > > stack,String action,String namespace) { > > > HttpServletRequest req = > (HttpServletRequest)pageContext.getRequest(); > > > HttpServletResponse res = > > > (HttpServletResponse)pageContext.getResponse(); > > > if(action == null) { > > > // no action supplied, default to the current request > > > ActionInvocation invoke = > > > > > > (ActionInvocation)stack.getContext().get(ActionContext.ACTION_INVOCATION); > > > if(invoke != null) { > > > ActionProxy proxy = invoke.getProxy(); > > > action = proxy.getActionName(); > > > namespace = proxy.getNamespace(); > > > } else { > > > String uri = req.getRequestURI(); > > > action = uri.substring(uri.lastIndexOf('/')); > > > } > > > } > > > String method = ""; > > > if(enableDynamicMethodInvocation) { > > > int bang; > > > if((bang = action.lastIndexOf('!')) != -1) { > > > method = action.substring(bang + 1); > > > action = action.substring(0,bang); > > > } > > > } > > > if(namespace == null) { > > > namespace = ""; > > > } > > > ActionConfig config = > > > > > > configuration.getRuntimeConfiguration().getActionConfig(namespace,action); > > > if(config != null) { > > > return UrlHelper.buildUrl(actionMapper.getUriFromActionMapping(new > > > ActionMapping(action,namespace,method,null)),req,res,null); > > > } else if(action != null) { > > > return UrlHelper.buildUrl(action,req,res,null); > > > } > > > return null; > > > } //processAction > > > > > > > > > > > > On Fri, Dec 17, 2010 at 1:58 PM, Ken McWilliams < > > [email protected] > > > >wrote: > > > > > > > I want <s:url> tag like functionality from within my action, so I can > > > > build a url with parameters so I can return it as a JSON result. > > > > > > > > So is there a method I can call from perhaps an AwareInterface that > can > > > > accomplish this? > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [email protected] > > > > For additional commands, e-mail: [email protected] > > > > > > > > > > > > > >

