In my
previous post, I explained how to handle uncaught exceptions of action method. Suppose
I had 5 action classes, all are retuning exceptions in some cases, I need to
handle all these exceptions like following.
<action name="login1" class="strutstutorial.actions.LoginAction1"> <exception-mapping result="error" exception="java.lang.Exception" /> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> <action name="login2" class="strutstutorial.actions.LoginAction2"> <exception-mapping result="error" exception="java.lang.Exception" /> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> <action name="login3" class="strutstutorial.actions.LoginAction3"> <exception-mapping result="error" exception="java.lang.Exception" /> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> <action name="login4" class="strutstutorial.actions.LoginAction4"> <exception-mapping result="error" exception="java.lang.Exception" /> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> <action name="login5" class="strutstutorial.actions.LoginAction5"> <exception-mapping result="error" exception="java.lang.Exception" /> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action>
Exception mapping is repeated in all
action classes, don’t you think it is redundant. Yes it is, to solve this
problem, structs come up with global-exception-mappings element, used to create
global exceptions, applicable to entire project. When any action element don’t
handle uncaught exception, it goes and check in global-exception-mappings
element.
Any exception-mapping declared under the
global-exception-mappings element must refer to a result in the global-results
element.
For example,
<global-results> <result name="error">/error.jsp</result> <result name="sqlError">/sqlError.jsp</result> </global-results> <global-exception-mappings> <exception-mapping result="sqlError" exception="java.sql.SQLException" /> <exception-mapping result="error" exception="java.lang.Exception" /> </global-exception-mappings>
No comments:
Post a Comment