Are you using the struts-spring plugin?

If so, I found I had to include:
struts.objectFactory.spring.autoWire = name
struts.objectFactory.spring.autoWire.alwaysRespect = true

to get beans autowired by name. autowiring using auto or type wasn't working in my app so I had to do it by name.

- Jonathan


mailtolouis2020-str...@yahoo.com wrote:
Hi All,
Our requirement is use to use STRUTS + REST + SPRING. We are stuck with the below problem: Rest controllers are not able to autowire the spring beans. So i am not able to inject the spring beans to the rest controllers that are created using convention plugin. 1) We configured the struts configuration as below:
<
bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myMapper" 
class="com.xxx.mapper.Struts2RestMapper" />

<constant name="struts.mapper.class" value="myMapper"/>

<constant name="struts.convention.action.suffix" value="Controller"/>

<constant name="struts.convention.action.mapAllMatches" value="true"/>

<constant name="struts.convention.default.parent.package" value="rest-default"/>

<constant name="struts.convention.package.locators" value="rest"/>
2) Struts2RestMapper is a custom ActionMapper to invoke the struts mapper or 
Rest mapper based on the request url. This is working fine however, rest 
controller is not working correctly due to failed dependencies.
3) Rest controller is pasted below.

@Results
({

@Result(name="success", type="redirectAction", params = {"actionName" , 
"userrest"})

})

public
class UserrestController extends ValidationAwareSupport implements 
ModelDriven<Object>, Validateable {

private UserDetails user = null;

private String userSignInId;

@Autowired

private UserDetailsService userService;

public void validate() {

//if (user.getClientName() == null || model.getClientName().length() ==0) {

// addFieldError("clientName", "The client name is empty");

//}

System.
out.println("validate Method invoked");

}

// GET /userrest

public HttpHeaders index() {

//list = messagesService.getAll();

System.
out.println("Index method invoked");

return new DefaultHttpHeaders("index").disableCaching();

}

public Object getModel() {

return user;

}

// GET /userrest/1

public HttpHeaders show() {

System.
out.println("show Method invoked");

return new DefaultHttpHeaders("show");

}

public void setId(String id) {

System.
out.println("setID Method invoked");

if (id != null) {

this.user = userService.loadUserByUsername(id);

}

this.userSignInId = id;

}

}

Please can some one guide me on how to get the rest controller to pick the 
spring beans (ie., userService in the above example) correctly.

Kind Regards

LV


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

Reply via email to