0

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

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

4

4 回答 4

2

在 Spring 3.2 中,您可以使用@ControllerAdvice注解创建一个具有适用于所有控制器的模型属性(以及初始化绑定器和异常处理程序)方法的类。

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

于 2013-06-07T07:56:40.060 回答
1

您可以利用拦截器来实现这一点。拦截器可以访问ModelAndView,因此您应该将需要建模的内容放入拦截器提供的适当方法之一中。

更多细节:

于 2013-05-30T12:14:06.320 回答
0

在 spring 3.2 中,我们可以选择使用@ControllerAdvice 指定我们想要拦截的基本包。下面是链接

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

于 2015-04-29T14:07:07.070 回答
0

我假设您有一个通用模型属性方法和一个通用模型属性 bean。如果您使用的弹簧有旧版本,那么您至少可以在一个通用实用程序中分离出方法的主体。

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

于 2015-07-31T09:31:35.277 回答