在不同控制器的视图之间共享modelAttribute

时间:2019-01-10 23:39:50

标签: spring model-view-controller modelattribute

在我当前的Spring项目(使用Thymeleaf)中,我拥有这两个控制器HomeController和一个通用控制器,扩展到从模型层到与实体相关联的所有控制器。

HomeController中,我有这个modelAttribute方法:

@ModelAttribute("usuario")
public Usuario usuario() {
  return usuario.findBy("username", SecurityContextHolder.getContext().getAuthentication().getName());
}

显然,此控制器中映射的视图是必需的。有什么方法可以与另一个控制器中映射的视图共享此modelAttribute?

我在很多地方都读过有关RedirectAttributes资源的信息,但我猜想它仅适用于重定向视图(例如modelAndView.setViewName("redirect:welcome");)?

1 个答案:

答案 0 :(得分:1)

将方法移至单独的类,并向该类添加@ControllerAdvice批注。这样,该类中的所有模型属性都将应用于应用程序中的所有控制器。

如果要限制模型属性可用的控制器组,可以在@ControllerAdvice批注中指定仅应增强特定程序包中,带有特定批注或实现特定接口的控制器。