Thanks for the snippets! Jasha
On 3 November 2011 15:52, Carlucci, Tony <[email protected]> wrote: > As Jesse mentioned we use a custom HandlerInterceptorAdapter to inject > common objects into all responses from the controllers. Here is a brief > snippet on how it would work: > > public class CommonModelHandlerInterceptor extends > HandlerInterceptorAdapter { > > /****/ > > @Autowired > public CommonModelHandlerInterceptor(UserService userService, > PortalSettingsService portalSettingsService) { > /****/ > } > > @Override > public void postHandle(HttpServletRequest request, HttpServletResponse > response, Object handler, ModelAndView modelAndView) throws Exception { > if (modelAndView != null) { > ModelMap map = modelAndView.getModelMap(); > map.addAttribute(ModelKeys.AUTHENTICATED_USER, > userService.getCurrentAuthenticatedUser()); > map.addAttribute(ModelKeys.PORTAL_SETTINGS_MAP, > portalSettingsService.getAllPortalSettings()); > } > > > super.postHandle(request, response, handler, modelAndView); > } > } > > then in dispatcher-servlet.xml add: > > <bean > class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> > <property name="interceptors"> > <list> > <ref bean="commonModelHandlerInterceptor"/> > </list> > </property> > </bean> > > Viola! You've now injected any common objects into the Spring ModelAndMap > object returned by all controllers. > > --- > Anthony Carlucci | SW App Dev Eng, Sr. | R501 / KW App Development & Maint > e: [email protected] | v: 781.271.2432 | f: 781.271.3299 > The MITRE Corporation | 202 Burlington Rd | Bedford, MA 01730-1420 > > -----Original Message----- > From: Ciancetta, Jesse E. [mailto:[email protected]] > Sent: Thursday, November 03, 2011 10:21 AM > To: [email protected] > Subject: RE: Portal preferences set by admin > > I've seen Spring HandlerInterceptor's used in the past for this sort of > thing and it's worked out pretty well: > > > http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-handlermapping-interceptor > > More specifically -- I've seen a class extending HandlerInterceptorAdapter > registered with the DefaultAnnotationHandlerMapping to add common objects > to the ModelAndView in the HandlerInterceptorAdapter.postHandle(...) method. > > Tony was actually the one who implemented the specific case I'm thinking > of for our internal portal -- maybe he could comment further if there are > questions on it. > > --Jesse > > >-----Original Message----- > >From: Jasha Joachimsthal [mailto:[email protected]] > >Sent: Thursday, November 03, 2011 8:56 AM > >To: [email protected] > >Subject: Portal preferences set by admin > > > >Hi, > > > >in the design of the admin interface there's also a tab for portal wide > >preferences. The admin can change things like > >- the title suffix for each page (" - Rave" will then be replaced by " - > >ACME University") > >- the number of items on a page in the widget store (or any other pageable > >list) > >- company logo > >etc etc > > > >We could create some base controller with a "getPortalSettings" that calls > >some PortalSettingsService that retrieves settings through a repository > >from the db (for each request...). All controllers should then extend this > >base controller. > >I'm wondering what the cleanest solution would be in Spring MVC or should > >my suggestion be the good enough option for the time being? > > > > > >Jasha Joachimsthal > > > >Europe - Amsterdam - Oosteinde 11, 1017 WT Amsterdam - +31(0)20 522 4466 > >US - Boston - 1 Broadway, Cambridge, MA 02142 - +1 877 414 4776 (toll > free) > > > >www.onehippo.com > >
