如何将模型属性保存在多个控制器可以使用它的公共位置

时间:2013-05-30 11:53:23

标签: spring-mvc

我是Spring框架的新手。任何人都可以解决以下问题。

我在控制器中有太多的模型属性方法(@ModelAttribute)说A,现在我想在其他控制器中使用所有这些模型属性,但我不想扩展控制器A,所以有任何方法可以保留所有这些模型通用位置的属性,所有控制器都可以在每次调用时执行此操作。

4 个答案:

答案 0 :(得分:2)

在Spring 3.2中,您可以使用@ControllerAdvice注释创建一个具有apply to all controllers的模型属性(以及init绑定器和异常处理程序)方法的类。

在旧版本中,您不能将带注释的方法移动到新类并使其成为所有控制器类的父级,而不是扩展控制器A吗?

答案 1 :(得分:1)

您可以利用拦截器来实现这一目标。拦截器可以访问ModelAndView,所以你应该在拦截器提供的适当方法之一中放置你需要建模的东西。

更多详情:

答案 2 :(得分:0)

使用spring 3.2,我们可以选择指定我们想要使用@ControllerAdvice拦截的basepackage。以下是链接

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ControllerAdvice.html

答案 3 :(得分:0)

我假设你有一个通用的模型属性方法和一个通用的模型属性bean。 如果您使用的弹簧是旧版本,那么您可以做的最少就是在常用实用程序中将方法的主体分开。

另一个解决方案是继承,您可以创建一个具有一个模型属性的超级控制器,然后将该控制器扩展为您想要的实际实现。保持超级控制器中的通用功能和子类中的特定实现。

相关问题