• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Liutauras Vilda
  • Bear Bibeault
  • Junilu Lacar
  • Martin Vashko
  • Jeanne Boyarsky
  • Tim Cooke
  • Knute Snortum
Saloon Keepers:
  • Ron McLeod
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Scott Selikoff
  • salvin francis
  • Piet Souris

Why is HandlerInterceptorAdapter postHandle method getting invoked after page is rendered

Posts: 7
  • 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
Posts: 7
  • 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.
Listen. That's my theme music. That's how I know I'm a super hero. That, and this tiny ad told me:
Java file APIs (DOC, XLS, PDF, and many more)
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!