Вы можете написать HandlerInterceptor
, который будет принимать все экземпляры Cookie из вашей модели и генерировать соответствующие заголовки cookie. Таким образом, вы можете сохранить ваши контроллеры чистыми и свободными от HttpServletResponse
.
@Component
public class ModelCookieInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(HttpServletRequest req, HttpServletResponse res, Object handler, ModelAndView modelAndView) throws Exception {
if (modelAndView != null) {
for (Object value : modelAndView.getModel().values()) {
if (value instanceof Cookie)
res.addCookie((Cookie) value);
}
}
}
}
Примечание. Не забудьте зарегистрировать перехватчик с помощью <mvc:interceptors>
(XML config) или WebMvcConfigurer.addInterceptors()
(Java config).