Hi There,

I'm pretty new to using Struts 2 for developing a web application. So I
would be very thankful if someone can clear out this roadblock for me.

I'm trying to write some custom validation code in method *public void
validate()* in the Action class. I also created an interceptor extending *
DefaultWorkflowInterceptor* checking for session object validity. But since
I implemented the interceptor my validate method does not get executed at
all. I need the validate method to be executed to implement custom field
validations every time the request is received. Since I'm new to using
Struts 2 this is the best design I could come up with. Your help in making
the validate method execute every time the request is received without
removing the interceptor will be highly appreciated. Following is my code:

*ShowChangePassword2Of2Action*
*
*
public class ShowChangePassword2Of2Action extends ActionSupport implements
Validateable{
    [Field variables]

    public String show(){
        [My business logic]
    }

    public void validate(){
        [My validation logic]
    }

    [Field variables getters and setters]
}



*SessionInterceptor*
*
*
public class SessionInterceptor extends DefaultWorkflowInterceptor{
    private static final long serialVersionUID = 1L;

    public String intercept(ActionInvocation invocation) throws Exception {
    ActionContext context = invocation.getInvocationContext();
    Map<String, Object> sessionMap = context.getSession();
    if(sessionMap == null || sessionMap.isEmpty()){
     System.out.println("Session expired...");
     return "sessionExpired";
    }//if
    else{
    return invocation.invoke();
    }//else
    }

    public void destroy() {
        System.out.println("Destroying Session Interceptor...");
    }
    public void init() {
        System.out.println("Initializing Session Interceptor...");
    }
}



*struts.xml*
*
*
<struts>
<package name="default" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"
/>
</result-types>
 <interceptors>
     <interceptor name="sessionInterceptor"
class="org.zssinfo.interceptor.SessionInterceptor"></interceptor>
    <interceptor-stack name="sessionInterceptorStack">
        <interceptor-ref name="sessionInterceptor" />
    </interceptor-stack>
</interceptors>
 <global-results>
<result name="sessionExpired" type="tiles">welcome</result>
</global-results>
 <action name="*ChangePassword2Of2" method="{1}"
class="org.zssinfo.action.ShowChangePassword2Of2Action">
<interceptor-ref name="sessionInterceptorStack"></interceptor-ref>
<result name="success" type="tiles">showChangePassword2Of2</result>
<result name="showChangePassword2Of2Error" type="tiles">errorPage</result>
<result name="input" type="tiles">showChangePassword1Of2</result>
</action>
</package>
</struts>

Thank you very much in advance.

Thanks,
Nikul

Reply via email to