struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jake Vang <vangj...@googlemail.com>
Subject Re: spring, struts2, convention plugin, how to "wire" an action class
Date Thu, 13 May 2010 12:44:09 GMT
yes, i read the documentation for that before posting here too. it
says to "simply" drop in the struts2-spring-plugin-<version>.jar. i
already have that in /WEB-INF/lib. however, towards the end of the
document, they are referencing how to initialize Actions from spring
using struts.xml and applicationContext.xml. since i am using
Annotations and the conventions plugin, i don't think this is what i
am looking for. currently, my struts.xml file is 3 lines only! (minus
the DOCTYPE lines).

there are little but significant differences in how a struts2 based
application behaves using the convention plugin (as opposed to using
the traditional struts.xml file).

i am committed to using the convention plugin + annotations and to
avoid as much as possible configurations in struts.xml. if there is an
example of how to get all this working (struts2 + convention +
annotations + spring), i would be most pleased. thanks.

On Thu, May 13, 2010 at 8:24 AM, Denis Cabasson
<denis.cabasson@gmail.com> wrote:
> 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
>
>

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


Mime
View raw message