Wow it is amazing how S2 can be used. This is a use of interceptor I've never seen before.
IMHO, I think it is too much trouble to declare an xxxAware interface and an xxxInterceptor to just share the same database data across multiple pages. I would stick to store the data in session or application scope. You have available the SessionAware and ApplicationAware interfaces that injects into an action a java.util.Map that usually is enough for testability. My own common solution to this problem would be to use Spring to inject a service bean into the action that would retrieve the category list from a cache (OSCache works great for me and has easy Spring integration.) When data is not in the cache or it times-out, it is read from the database. 2008/7/9 Chris Pratt <[EMAIL PROTECTED]>: > That's usually how I start. The one thing I usually add is an Aware > interface that allows me to inject the value into my Actions when it's > needed. So in your case I'd add a simple interface: > > interface CategoryListAware { > void setCategoryList(List<Category> categories); > } > > And at the end of your interceptor I'd add: > > Object action = invocation.getAction(); > if(action instanceof CategoryListAware) { > ((CategoryListAware)action).setCategoryList(categoryList); > } > > That way you can add the Interceptor to your default stack and the > Actions that need the category list can have it injected without > having to have any knowledge about the Session. (which makes the > system much easier to unit test). > > (*Chris*) > > On Wed, Jul 9, 2008 at 3:28 PM, Dhiraj Thakur <[EMAIL PROTECTED]> wrote: >> Hello there, >> >> There are 4 jsp page in which i want to show same category by retrieving it >> from database. >> What is the best way to do that? should i write a intercepter which will >> retrieve Category from database and store it in session? >> something like this >> >> >> if (session.getAttribute("category") == null) { >> >> CategoryDAO categoryDAO = new CategoryDAO(); >> >> categoryList = categoryDAO.listCategory(); >> >> session.setAttribute(ConfigAPP.CATEGORY_KEY, categoryList); >> >> categoryList = (List) >> session.getAttribute(ConfigAPP.CATEGORY_KEY); >> >> System.out.println(categoryList.size()); >> >> } else { >> categoryList = categoryList = (List) >> session.getAttribute(ConfigAPP.CATEGORY_KEY); >> } >> >> >> or is there any other way to do that ? >> >> >> >> *Dhiraj* >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]