Hi,
I have the following configuration snippet in my struts.xml:
<package name=*"default"* namespace=*"/"* extends=*"struts-default"*>
<interceptors>
<interceptor name="interceptor1"
class="com.abc.interceptors.MenuInterceptor">
</interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack">
<param name="exception.logEnabled">true</param>
<param name="exception.logLevel">ERROR</param>
</interceptor-ref>
<interceptor-ref name="interceptor1" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"></default-interceptor-ref>
i.e I have a interceptor which I am calling after the defaultStack executes.
My MenuInterceptor has the following code fragment in my intercept method
of MenuInterceptor
ActionContext ac = actionInvocation.getInvocationContext();
String result = actionInvocation.invoke();
if( null==ac.getSession().get("menu")){
menu = parser.getMenu();
ac.getSession().put("menu", menu);
}
LOG.debug("menu from session at end of intercept is:
"+ac.getSession().get("menu"));
return result;
i.e after the action logic executes, I am checking if the sesssion has the
object. if the object is not present I am populating it and storing in the
session.
my LOG outputs valid object in the first launch also.
When I execute for the first time, the menu object is not available in the
JSP, however if I refresh the page, the menu object is available in the JSP.
I could not have my custom interceptor to execute after the default
interceptors stack as the result already gets comitted and I cannot put
object in my session.
I suspect there is something done by some interceptor in the default stack
which I am missing.
Could you please let me know how I can set something in session in
Interceptor and have it available in my JSP.
Thanks,
JK