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]
> > > >
> > > >
> > >
> >
>

Reply via email to