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.c...@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:vangj...@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.c...@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:vangj...@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.c...@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:vangj...@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.c...@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:vangj...@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.c...@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:vangj...@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-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


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


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


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


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


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


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


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


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


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


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




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

Reply via email to