This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Spring and the fly likes Why is HandlerInterceptorAdapter postHandle method getting invoked after page is rendered Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Frameworks » Spring
Bookmark "Why is HandlerInterceptorAdapter postHandle method getting invoked after page is rendered" Watch "Why is HandlerInterceptorAdapter postHandle method getting invoked after page is rendered" New topic
Author

Why is HandlerInterceptorAdapter postHandle method getting invoked after page is rendered

Suman Poluri
Greenhorn

Joined: Aug 04, 2009
Posts: 7
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

Joined: Aug 04, 2009
Posts: 7
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
 
subject: Why is HandlerInterceptorAdapter postHandle method getting invoked after page is rendered
 
Similar Threads
Caching rendered html in jsp
ModelAndView Object is getting null
Problem..Sending Extra Parameter on Ajax Call
Using a HandlerInterceptorAdapter
Model Attribute not present in destintation JSP