Musachy Barroso wrote:
If I want to add a constant that can be injected in one of xwork
classes (like "devMode" for example), what do I need to do? Just
adding @Inject and defining the constant in default.properties in core
doesn't work. I don't know much about this whole guice black magic
thing :)

musachy

Here's some simple examples:

Setup some beans and constants in the Container with unique names:

http://code.google.com/p/struts2urlplugin/source/browse/trunk/struts2-url-plugin/src/main/resources/struts-plugin.xml

eg. 1. Inject constant into a bean

http://code.google.com/p/struts2urlplugin/source/browse/trunk/struts2-url-plugin/src/main/java/com/blueskyminds/struts2/urlplugin/URLPatternActionMapper.java
Line 333
  @Inject("struts.urlplugin.actionMapConfiguration")
public void setMappingConfigurationName(String mappingConfigurationName) {
       this.mappingConfigurationName = mappingConfigurationName;
   }

eg. 2. Inject Container into a bean to enable run-time lookup by name and class:
  @Inject
   public void setContainer(Container container) {
       this.container = container;
   }
 Line 116
mappingConfiguration = container.getInstance(ActionMapConfiguration.class, mappingConfigurationName);

eg. 3. Inject Bean into another bean directly: exactly as per the container injection. If there's only one instance it will bind, otherwise specify the name, otherwise it will fail.
@Inject("defaultActionMapper")
public void setActionMapper(ActionMapper actionMapper) {...

It only gets complicated when you need to mix injection with beans created outside the container, as described by Wes.

cheers,
Jeromy Evans

PS. this is far inferior to the current functionality of Guice.









---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to