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