Я создаю веб-сайт, используя структуру Spring-MVC. В шаблон я хочу включить некоторую «общую» информацию. Общий в том смысле, что он не специфичен для текущего контроллера, а используется на каждой странице. Это может быть что-то вроде сгенерированного меню, количества минут, в течение которых пользователь находится в системе, или текущей температуры на северном полюсе.
Что я сейчас делаю
Я создал абстрактный класс с методом заполнения модели значениями по умолчанию. Мои контроллеры расширяют этот класс, и я вызываю этот метод в каждом методе (@RequestMapping-ed), что является недостатком. Он кажется немного хакерским и не очень гибким.
@Component
public abstract class AbstractBaseController {
@Autowired private SomeService someService;
protected void populateModel(Model model) {
model.addAttribute("value", someService.getGenericValue());
}
}
@Controller
public class HomeController extends AbstractBaseController {
@RequestMapping("/") public String index(Model model) {
populateModel(model);
return "home";
}
}
Мой вопрос
Как предоставить эти общие атрибуты моему представлению. Есть ли лучший способ, чем то, что я делаю сейчас?
(Я использую Spring/Spring-MVC 4, JavaConfig, Thymeleaf с диалектомthymeleaf-layout-dialect)