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

Reply via email to