This week's book giveaway is in the OCMJEA forum.
We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line!
See this thread for details.
The moose likes Other Application Frameworks and the fly likes Spring & Struts - loading spring exception class from struts-config.xml Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Frameworks » Other Application Frameworks
Bookmark "Spring & Struts - loading spring exception class from struts-config.xml" Watch "Spring & Struts - loading spring exception class from struts-config.xml" New topic
Author

Spring & Struts - loading spring exception class from struts-config.xml

Andrew Lohans
Greenhorn

Joined: May 16, 2005
Posts: 4
Hi gang,

I have a web app using Spring's IoC, and Struts (for presentation layer). The issue is that I define an exception handler in the struts global-exceptions tag in the struts-config.
What I'd like to be able to do is to use Spring's IoC to inject some parameters into the exception handler class being used (I'm injecting string parameters that will change based on which environment the application is in).

All well and good, except that while I can see spring injecting the values into the exception handler class, when struts comes to get this class it makes it's own one up (and hence all the variables are null, and the app gets an error message on the error message page - classy).

Here's an exerpt from the struts-config file:

<exception handler="com.mbl.insurance.web.exception.SystemExceptionHandler" key="global.error.message" path="/error.do" scope="request"
type="java.lang.Exception" />

Now, the chap who wrote up the spring framework implemented it so that all the struts action classes inherit from an abstract action class, and in this class there are a bunch of getter methods, that pretty much pull the necessary spring-instantiated class from the bean factory.
However, how do I work this so that my SystemExceptionHandler class loaded by struts is the one that spring has instantiated!

Any ideas?
Andrew
Karthik Guru
Ranch Hand

Joined: Mar 06, 2001
Posts: 1209
I'm just thinking out loud. What am saying here could be outright wrong
I'm assuming that you w'd have configured struts to use Spring's request processor instead-

org.springframework.web.struts.DelegatingRequestProcessor

I see from the DelegatingRequestProcessor javadocs that they have not overriden the method 'processException' behaviour of the base class. I'm sure struts (by default) must be instanting the Exception handler in that method depending upon the exception that is getting thrown from your action and ofcourse struts-config.xml configuration. Now if I understand your requirement correctly, you dont want Struts to be doing that. So I guess you can override processException and get Spring to return the instance of the configured Exception handler instead. Do you mind taking a look at the source of both Struts RequestProcessor (processException) and Spring DelegatingRequestProcessor?
You might have to subclass DelegatingRequestProcessor , override processException and configure the new subclass as struts request processor though.
[ December 01, 2005: Message edited by: Karthik Guru ]
 
 
subject: Spring & Struts - loading spring exception class from struts-config.xml