You can "de-autowire" an action by creating an XML configuration for it.
Then you can use the spring name instead of the class in the action config
<bean id="myAction" class="com.actions.MyAction">
<property name="myManager" ref="userService"/>
</bean>
<bean id="myOtherAction" class="com.actions.MyAction">
<property name="myManager" ref="otherUserService"/>
</bean>
struts.xml
<action name="something" class="myAction">...</action>
<action name="somethingElse" class="myOtherAction">...</action>
That way you get the benefit of autowiring for your simple stuff and you can
use XML config for your more exotic Spring injections.
Relph,Brian wrote:
>
>
> Did you try setting the value="none"?
>
>
> Brian Relph
>
> -----Original Message-----
> From: Timothy Orme [mailto:[email protected]]
> Sent: Friday, January 16, 2009 10:41 AM
> To: Struts Users Mailing List
> Subject: Re: Incorrect Bean Injected
>
> So scratch that, I figured out that Struts is set to autowire by default
> with the spring plugin.
>
> In my struts.xml I have:
>
> <constant name="struts.objectFactory"
> value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> <constant
> name="struts.objectFactory.spring.autoWire" value="type" />
>
> And am now autowiring by type instead of name. However, does anyone know
> how to turn off autowiring altogether?
> I've seen a feature request for this, but it hasn't been filled yet. Has
> anyone devised a workaround?
>
> Thanks,
> Tim Orme
>
> Timothy Orme wrote:
>> This seems really strange to me, but I don't know the inner workings
>> of struts enough to know if it's expected behavior.
>>
>> I'm using Struts 2.1.2 and spring 2.5.3
>>
>> I have a 2 service beans that have the same name, but depending on the
>> action, one might be used instead of the other.
>>
>>
>> <bean id="hibernateUserService"
>> class="hibernate.service.impl.LoginUserServiceImpl">
>> </bean>
>>
>> <bean id="sqlUserService"
>> class="sql.service.impl.LoginUserServiceImpl">
>> </bean>
>>
>> <bean id="submitQuoteAction" class="action.quotes.SubmitQuoteAction">
>> <property name="userService" ref="hibernateUserService" /> </bean>
>>
>> <bean id="registerUserAction" class="action.users.RegisterUserAction">
>> <property name="userService" ref="sqlUserService"/> </bean>
>>
>> So I have 2 beans, each serving a similar purpose, so named the same,
>> but used in different actions.
>>
>> What happens is, at the webapp startup, I see the beans get injected
>> into the actions fine. The types are correct, and the property is set.
>> The server starts without any issues. However, whats strange is that
>> when I try and go to either action I get a null pointer for the
>> userService objects in both actions.
>>
>> I did notice though, that if I name one of the service beans to just
>> "userService" instead of say, "hibernateUserService" then one of the
>> actions will work correctly, while the other will fail saying that it
>> cant cast sql.service.impl.LoginUserServiceImpl to
>> hibernate.service.impl.LoginUserServiceImpl.
>>
>> It seems then that Struts is wiring the properties by bean name and
>> overriding the beans that I have specified in my applicationContext.
>> Does anyone know what would cause this or how to work around it?
>>
>> Thanks,
>> Tim Orme
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
> ----------------------------------------------------------------------
> CONFIDENTIALITY NOTICE This message and any included attachments are from
> Cerner Corporation and are intended only for the addressee. The
> information contained in this message is confidential and may constitute
> inside or non-public information under international, federal, or state
> securities laws. Unauthorized forwarding, printing, copying, distribution,
> or use of such information is strictly prohibited and may be unlawful. If
> you are not the addressee, please promptly delete this message and notify
> the sender of the delivery error by e-mail or you may call Cerner's
> corporate offices in Kansas City, Missouri, U.S.A at (+1) (816)221-1024.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
>
--
View this message in context:
http://www.nabble.com/Incorrect-Bean-Injected-tp21502777p21504674.html
Sent from the Struts - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]