You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by Chris Pratt <th...@gmail.com> on 2007/09/18 06:02:51 UTC

Help with the @Inject Annotation

I'm attempting to understand the @Inject Annotation and how it can be
used.  I'm trying to create a tag library that needs to look up action
data, so following the pattern from the FormTag I added this methods
to my tag class:

  private boolean enableDynamicMethodInvocation = true;
  private Configuration configuration;
  private ActionMapper actionMapper;

  /**
   * 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);
    log.debug("Dynamic Method Invocation Enabled {}",enable);
  } //setEnableDynamicMethodInvocation

  /**
   * Inject the Struts Configuration for looking up the proper Action
   *
   * @param config The Struts Configuration
   */
  @Inject
  public void setConfiguration (Configuration configuration) {
    this.configuration = configuration;
    log.debug("Struts Configuration {}",configuration);
  } //setConfiguration

  /**
   * Inject the Action Mapper
   *
   * @param actionMapper The Action Mapper
   */
  @Inject
  public void setActionMapper (ActionMapper actionMapper) {
    this.actionMapper = actionMapper;
    log.debug("Struts Action Mapper {}",actionMapper);
  } //setActionMapper

But the attributes never get injected into the class.  Is there
something else that I have to configure to get this working?  Thanks.
  (*Chris*)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org


Re: Help with the @Inject Annotation

Posted by Chris Pratt <th...@gmail.com>.
I think I just stumbled on the answer while slogging through the code,
You have to call:

Dispatcher.getInstance().getContainer().inject(this);

somewhere early on.  I'm putting it in doStartTag (Where the
ComponentTagSupport class has it) and I'm testing now.
  (*Chris*)

On 9/18/07, Ian Roughley <ia...@fdar.com> wrote:
> I'm not sure that tag libraries are created by the object factory, if
> this is the case, then the behaviour you are observing is correct (as
> the annotations aren't checked and thus values not injected).  You
> should be able to track back the object creation in the code to confirm
> this.
>
> /Ian
>
> Chris Pratt wrote:
> > I'm attempting to understand the @Inject Annotation and how it can be
> > used.  I'm trying to create a tag library that needs to look up action
> > data, so following the pattern from the FormTag I added this methods
> > to my tag class:
> >
> >   private boolean enableDynamicMethodInvocation = true;
> >   private Configuration configuration;
> >   private ActionMapper actionMapper;
> >
> >   /**
> >    * 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);
> >     log.debug("Dynamic Method Invocation Enabled {}",enable);
> >   } //setEnableDynamicMethodInvocation
> >
> >   /**
> >    * Inject the Struts Configuration for looking up the proper Action
> >    *
> >    * @param config The Struts Configuration
> >    */
> >   @Inject
> >   public void setConfiguration (Configuration configuration) {
> >     this.configuration = configuration;
> >     log.debug("Struts Configuration {}",configuration);
> >   } //setConfiguration
> >
> >   /**
> >    * Inject the Action Mapper
> >    *
> >    * @param actionMapper The Action Mapper
> >    */
> >   @Inject
> >   public void setActionMapper (ActionMapper actionMapper) {
> >     this.actionMapper = actionMapper;
> >     log.debug("Struts Action Mapper {}",actionMapper);
> >   } //setActionMapper
> >
> > But the attributes never get injected into the class.  Is there
> > something else that I have to configure to get this working?  Thanks.
> >   (*Chris*)
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
> > For additional commands, e-mail: dev-help@struts.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
> For additional commands, e-mail: dev-help@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org


Re: Help with the @Inject Annotation

Posted by Ian Roughley <ia...@fdar.com>.
I'm not sure that tag libraries are created by the object factory, if 
this is the case, then the behaviour you are observing is correct (as 
the annotations aren't checked and thus values not injected).  You 
should be able to track back the object creation in the code to confirm 
this.

/Ian

Chris Pratt wrote:
> I'm attempting to understand the @Inject Annotation and how it can be
> used.  I'm trying to create a tag library that needs to look up action
> data, so following the pattern from the FormTag I added this methods
> to my tag class:
>
>   private boolean enableDynamicMethodInvocation = true;
>   private Configuration configuration;
>   private ActionMapper actionMapper;
>
>   /**
>    * 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);
>     log.debug("Dynamic Method Invocation Enabled {}",enable);
>   } //setEnableDynamicMethodInvocation
>
>   /**
>    * Inject the Struts Configuration for looking up the proper Action
>    *
>    * @param config The Struts Configuration
>    */
>   @Inject
>   public void setConfiguration (Configuration configuration) {
>     this.configuration = configuration;
>     log.debug("Struts Configuration {}",configuration);
>   } //setConfiguration
>
>   /**
>    * Inject the Action Mapper
>    *
>    * @param actionMapper The Action Mapper
>    */
>   @Inject
>   public void setActionMapper (ActionMapper actionMapper) {
>     this.actionMapper = actionMapper;
>     log.debug("Struts Action Mapper {}",actionMapper);
>   } //setActionMapper
>
> But the attributes never get injected into the class.  Is there
> something else that I have to configure to get this working?  Thanks.
>   (*Chris*)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
> For additional commands, e-mail: dev-help@struts.apache.org
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org