#spring #model-view-controller
Вопрос:
Что-то вроде этого:
@Controller public class HomeController { public String getCurrentUserDetails() { String username = "testuser"; return username; } } @Controller public class DashboardController { @RequestMapping("/admin/dashboard") public ModelAndView showDashbard() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("username", GET username FROM HOME CONTROLLER [HomeController's getCurrentUserDetails]); modelAndView.setViewName("/admin/dashboard"); return modelAndView; } } @Controller public class ProfileController { @RequestMapping("/admin/profile") public ModelAndView showProfile() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("username", GET username FROM HOME CONTROLLER [HomeController's getCurrentUserDetails]); modelAndView.setViewName("/profile/dashboard"); return modelAndView; } }
Да, я знаю, что могу создать экземпляр HomeController и получить объект. Но создание объекта в каждом контроллере-это суета. Я просто хочу, чтобы значение одного контроллера было доступно во всех других контроллерах.
Комментарии:
1. Не просто не делай этого. Если вы хотите, чтобы переменная была доступна во всех моделях (в основном всегда), используйте
@ControllerAdvice
вместо нее либо aHandlerInterceptor
, либо a.2. Вы также можете использовать
@Session
компонент, обновлять его всякийgetCurrentUserDetails()
раз, когда он вызывается, и вводить его там, где вам это нужно. Если вы используете Spring Security, вы также можете получить учетные данные отSecurityContextHolder
.