struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Denis Cabasson <denis.cabas...@gmail.com>
Subject Re: spring, struts2, convention plugin, how to "wire" an action class
Date Thu, 13 May 2010 12:24:32 GMT
Jake, the short answer to your problem is : use the struts-spring plugin 
( http://struts.apache.org/2.1.8.1/docs/spring-plugin.html ). Include 
the jar for that plugin in your classpath, and Struts 2 will use Spring 
to manage the Action lifecycle, meaning you can inject anything the way 
you are describing it above (including String, etc...)
Denis.

Le 2010-05-13 08:09, Jake Vang a écrit :
> thanks. example please? (when you have time).
>
> On Thu, May 13, 2010 at 6:52 AM, James Cook<James.Cook@wecomm.com>  wrote:
>    
>> Ahh hmm.
>>
>> You can use the autowired, You just have to declare you stuff in the spring xml.
E.g.
>>
>> <bean id="myJDBCString" class="java.lang.String" ....
>>
>> I think you can also use the @Resource anno as well. Can't think off the top of my
head.
>>
>> -----Original Message-----
>> From: Jake Vang [mailto:vangjake@googlemail.com]
>> Sent: 13 May 2010 11:44
>> To: Struts Users Mailing List
>> Subject: Re: spring, struts2, convention plugin, how to "wire" an action class
>>
>> yes. precisely.
>>
>> On Thu, May 13, 2010 at 6:41 AM, James Cook<James.Cook@wecomm.com>  wrote:
>>      
>>> Oh, did you want your action as a spring managed bean? Ah I think i massively
miss read you. You want to inject predefined values etc?
>>>
>>>
>>> -----Original Message-----
>>> From: Jake Vang [mailto:vangjake@googlemail.com]
>>> Sent: 13 May 2010 11:38
>>> To: Struts Users Mailing List
>>> Subject: Re: spring, struts2, convention plugin, how to "wire" an action class
>>>
>>> thanks. i won't go that route. i noticed your example (in the first
>>> response) and i realized that i may trying to push some business logic
>>> into the Action class. and, i don't think that's too good of a
>>> practice. i simply revised my Service class to hold these values
>>> (booleans, String, int, etc...) and now the problem goes away. it's a
>>> workaround.
>>>
>>> if anyone is reading this post and knows how to use struts2 (w/
>>> convention plugin) + spring to construct Action classes, please let me
>>> know. the examples i've seen are only with struts1 (and though not too
>>> complicated, seem verbose with the xml).
>>>
>>> On Thu, May 13, 2010 at 6:20 AM, James Cook<James.Cook@wecomm.com>  wrote:
>>>        
>>>> Yeah sorry, short on time here, didn't see your question at the bottom. Add
the spring jar from the spring project.
>>>>
>>>> -----Original Message-----
>>>> From: Jake Vang [mailto:vangjake@googlemail.com]
>>>> Sent: 13 May 2010 11:16
>>>> To: Struts Users Mailing List
>>>> Subject: Re: spring, struts2, convention plugin, how to "wire" an action
class
>>>>
>>>> doesn't answer the question but thanks anyways.
>>>>
>>>> On Thu, May 13, 2010 at 6:12 AM, James Cook<James.Cook@wecomm.com>
 wrote:
>>>>          
>>>>> Nope, no they are not in the xml for me. I use the @Service/@Repository
annotations on the class, coupled with the component scan in the Spring xml.
>>>>>
>>>>> -----Original Message-----
>>>>> From: Jake Vang [mailto:vangjake@googlemail.com]
>>>>> Sent: 13 May 2010 11:09
>>>>> To: Struts Users Mailing List
>>>>> Subject: Re: spring, struts2, convention plugin, how to "wire" an action
class
>>>>>
>>>>> well, there's something strange about struts2 (with convention plugin)
>>>>> + spring. if your action has a field representing a service,
>>>>> MyInjectedService myInjectedService, you just have to define that in
>>>>> the spring xml file. for example, your Action class looks like the
>>>>> following.
>>>>>
>>>>> public class MyAction extends ActionSupport {
>>>>>   private Service service;
>>>>>
>>>>>   @Action(value="/dummy")
>>>>>   public String dummy() { return SUCCESS; }
>>>>>   public Service getService() { return service; }
>>>>>   public void setService(Service service) { this.service = service; }
>>>>> }
>>>>>
>>>>> in your spring xml file (i.e. applicationContext.xml), you simply
>>>>> define a bean with the id="service". for example,
>>>>>
>>>>> <bean id="service" class="my.class.Service"/>
>>>>>
>>>>> that's it; you don't have to do anything else. you don't even have to
>>>>> explicitly say (using XML) to inject this when you are creating an
>>>>> instance of MyAction. now when a user accesses /dummy, MyAction will
>>>>> be created and its service field will actually be injected with what
>>>>> is specified in the spring xml file.
>>>>>
>>>>> what irks me or  bothers me is that it is not obvious at the moment
>>>>> how to simply inject strings or booleans into the Action class. it
>>>>> should be just as simple.
>>>>>
>>>>> upon analyzing what i am doing, and in light of what you said, perhaps
>>>>> i am trying to push some logic into the Action class that shouldn't be
>>>>> there. perhaps i should push the logic to a service class instead. in
>>>>> this case, this problem goes away. BUT, the question remains, how can
>>>>> i use DI with struts2 (convention plugin)  and spring on Action
>>>>> classes? or can i not? if i can't, end of story. if i can, how?
>>>>>
>>>>> On Thu, May 13, 2010 at 5:44 AM, James Cook<James.Cook@wecomm.com>
 wrote:
>>>>>            
>>>>>> Hmm. I use the same combo.
>>>>>>
>>>>>> I found at some point I could jsut do
>>>>>>
>>>>>> public class MyAction extends ActionSupport {
>>>>>>
>>>>>> private MyInjectedService service
>>>>>>
>>>>>> etc etc
>>>>>>
>>>>>> But I have started doing:
>>>>>>
>>>>>> public class MyAction extends ActionSupport {
>>>>>>
>>>>>> @Autowired
>>>>>> private MyInjectedService service
>>>>>>
>>>>>> I am not sure if that alters the way Struts2/Spring does it. But
it does
>>>>>> make it a bit clearer to read.
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Jake Vang [mailto:vangjake@googlemail.com]
>>>>>> Sent: 13 May 2010 10:23
>>>>>> To: user@struts.apache.org
>>>>>> Subject: spring, struts2, convention plugin, how to "wire" an action
>>>>>> class
>>>>>>
>>>>>> i am using struts 2.1.8.1 and the convention plugin. i am also using
>>>>>> spring for dependency injections (DI). my question is if it is
>>>>>> possible to to use struts2 + convention plugin with spring for DI
on
>>>>>> my Action classes? i have searched  the internet but only seen
>>>>>> examples using struts 1 + spring for DI on Action classes. the
>>>>>> convention plugin makes life simpler (no XML), but also, partially
>>>>>> because of little documentation, makes it uneasy to do certain things.
>>>>>> i wonder if this is part of the reason why DI on Action classes using
>>>>>> spring + struts is not obvious for me.
>>>>>>
>>>>>> Here's a simple code. This is my action class.
>>>>>>
>>>>>> public class SpringWiringAction extends ActionSupport {
>>>>>>   private String message = "no dependency injection";
>>>>>>
>>>>>>   @Action(value="/spring-wiring")
>>>>>>   public String springWiring() {
>>>>>>   return SUCCESS;
>>>>>>   }
>>>>>>
>>>>>>   public String getMessage() { return message; }
>>>>>>   public void setMessage(String message) { this.message = message;
}
>>>>>> }
>>>>>>
>>>>>> My "view" or the JSP page corresponding to the Action is:
>>>>>> /webapp/WEB-INF/content/spring-wiring-success.jsp.
>>>>>>
>>>>>> <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
>>>>>> pageEncoding="ISO-8859-1"%>
>>>>>> <%@taglib uri="/struts-tags" prefix="s" %>
>>>>>> <html>
>>>>>>   <head><title>Test Spring Wiring</title</head>
>>>>>>   <body>
>>>>>>   <s:property value="message"/>
>>>>>>   </body>
>>>>>> </html>
>>>>>>
>>>>>> My web.xml is setup according to
>>>>>> http://struts.apache.org/2.0.14/docs/struts-2-spring-2-jpa-ajax.html.
>>>>>>
>>>>>> My spring XML file (/webapp/WEB-INF/applicationContext.xml) is defined
>>>>>> as following.
>>>>>>
>>>>>> ...
>>>>>> <bean id="placeholderConfig"
>>>>>> class="org.springframework.beans.factory.config.PropertyPlaceholderConfi
>>>>>> gurer">
>>>>>>   <property name="location"
>>>>>> value="WEB-INF/applicationContext.properties"/>
>>>>>> </bean>
>>>>>> ...
>>>>>> <bean name="/spring-wiring" class="com.me.actions.SpringWiringAction">
>>>>>>   <property name="message" value="${message}"/>
>>>>>> </bean>
>>>>>>
>>>>>> My /webapp/WEB-INF/applicationContext.properties file then has this
>>>>>> content.
>>>>>>
>>>>>> message=dependency inject success
>>>>>>
>>>>>> when i start up tomcat 6, everything starts up correctly and there
are
>>>>>> no complaints. however, when i go to
>>>>>> http://localhost/webapp/spring-wiring, the message that gets displayed
>>>>>> is "no dependency injection".
>>>>>>
>>>>>> is there something that i am missing using spring + struts2 (with
the
>>>>>> convention plugin) to use DI on Actions?
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>>>
>>>>>>
>>>>>>              
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>>
>>>>>
>>>>>            
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>
>>>>
>>>>          
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>> For additional commands, e-mail: user-help@struts.apache.org
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>> For additional commands, e-mail: user-help@struts.apache.org
>>>
>>>
>>>        
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
>>      
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
>    


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


Mime
View raw message