• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Why is HandlerInterceptorAdapter postHandle method getting invoked after page is rendered

 
Suman Poluri
Greenhorn
Posts: 7
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
My Spring MVC web app has a navigation menu at the top of the page with links to a list of items. The list of items is retrieved from the database. This menu is common to all pages in the application. Currently, in every controller, I retrieve and store the list of items in session (if not already in session), so that it is available on every page. It works fine, but I feel this there should be a better way to do this. To avoid this redundancy, I am now trying to use a HandlerInterceptorAdapter. I am able to get it work, but not perfectly. The first time I load the page, I do not see the object I set in session. But, if I refresh the page, I do see the object in session.

I created my interceptor this way:


I declared the interceptor:

I am checking if the object is set in session by the time the jsp renders:


With that, when I first load the page, I see the following print in the console:


My understanding is that the posthandle method is invoked before the page is rendered. However, according to the output on the console, I see that the jsp is being rendered before the interceptor's posthandle method.

Can anyone help me understand why it is behaving this way?
 
Suman Poluri
Greenhorn
Posts: 7
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
On further investigation, I found the issue to be in the way I configured my spring context xml files. I had two files - one for the application context and the other for the web context. Initially I defined the component-scan and mv:annotation-driven tags in the application context xml:

and defined my interceptors in the web context xml.

In the debug mode, I saw that the interceptors were getting mapped to the context after the request is processed.

To make it work, I changed the configuration in the application context to the following:

and added the following to the web context xml:


I am still trying to understand why this worked and the earlier configuration did not.
 
I agree. Here's the link: http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic