File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Struts and the fly likes declarative exception tag ignored! Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "declarative exception tag ignored!" Watch "declarative exception tag ignored!" New topic

declarative exception tag ignored!

Brad Carson

Joined: Sep 02, 2005
Posts: 7
When declaratively handling exceptions, struts is completely ignoring the exception tag I specify in my action:

I have the following Exception hierarchy (low to high):
DuplicateRecordException -> DataAccessException -> ApplicationException -> BaseException -> NestableException

My UserAction invokes a register method, which like other business logic methods throws an ApplicationException so that struts can handle it.

In the case above, a DuplicateRecordException is thrown if a user tries to register with a user name that already exists. I can see through my logged output that the exception is indeed being thrown, but the registration page doesn't indicate it. This is the message I get from <html:errors/>:
???en_US.DataAccessException error in register(): ic.pd.common.DuplicateRecordException: Duplicate user exists for username='100251162'???

Whereas I'm expecting the message from the resources bundle specified by the key (error.register.duplicate) that I configured for the exception in struts-config.xml. In fact, even if I change the path in the exception tag to somewhere else, it still takes me back to my registration page, so it appears to be completely ignoring my exception tag!

Any idea why?

Thanks in advance,
Brad Carson

Joined: Sep 02, 2005
Posts: 7
I solved my own problem!

I came across this excellent article by Hu Ji Rong: "Handle Exceptions in Web Applications with EJB and STRUTS"

I rewrote my exception classes with respect to the article, made a new DuplicateUserException class extending from ApplicationException and modified the struts-config.xml respectively and voila -- it worked!

I'm guess it must have something to do with how my exceptions were written and that struts was unable to traverse through the hierarchy to handle the DuplicateRecordException. I suspect that it could previously only handle ApplicationException types and not its children.
I agree. Here's the link:
subject: declarative exception tag ignored!
It's not a secret anymore!