我是Spring框架的新手。任何人都可以解决以下问题。
我在控制器中有太多的模型属性方法(@ModelAttribute)说A,现在我想在其他控制器中使用所有这些模型属性,但我不想扩展控制器A,所以有任何方法可以保留所有这些模型通用位置的属性,所有控制器都可以在每次调用时执行此操作。
答案 0 :(得分:2)
在Spring 3.2中,您可以使用@ControllerAdvice
注释创建一个具有apply to all controllers的模型属性(以及init绑定器和异常处理程序)方法的类。
在旧版本中,您不能将带注释的方法移动到新类并使其成为所有控制器类的父级,而不是扩展控制器A吗?
答案 1 :(得分:1)
您可以利用拦截器来实现这一目标。拦截器可以访问ModelAndView
,所以你应该在拦截器提供的适当方法之一中放置你需要建模的东西。
更多详情:
答案 2 :(得分:0)
使用spring 3.2,我们可以选择指定我们想要使用@ControllerAdvice拦截的basepackage。以下是链接
答案 3 :(得分:0)
我假设你有一个通用的模型属性方法和一个通用的模型属性bean。 如果您使用的弹簧是旧版本,那么您可以做的最少就是在常用实用程序中将方法的主体分开。
另一个解决方案是继承,您可以创建一个具有一个模型属性的超级控制器,然后将该控制器扩展为您想要的实际实现。保持超级控制器中的通用功能和子类中的特定实现。