我有许多控制器方法分布在许多类中。每个方法都需要一个Model
对象,并且我的所有方法都会将一些共享属性填充到模型中(主要是控制导航栏的显示)。有没有办法将一个“基础”方法插入到Spring中?我想要一个方法来填充我的共享属性,然后进入特定的控制器方法(或反过来)。有人知道如何做到这一点吗?
我有许多控制器方法分布在许多类中。每个方法都需要一个Model
对象,并且我的所有方法都会将一些共享属性填充到模型中(主要是控制导航栏的显示)。有没有办法将一个“基础”方法插入到Spring中?我想要一个方法来填充我的共享属性,然后进入特定的控制器方法(或反过来)。有人知道如何做到这一点吗?
PreHandle
或PostHandle
方法的类,并配置它将在哪些请求上运行。在您的情况下,您可能需要使用PostHandle
,因为这将为您提供对ModelAndView的访问权限,以便您可以使用共享项填充它。在Spring和Spring MVC中,有几个扩展点可供使用:
HandlerInterceptor
- 拦截每个处理程序方法的简单方法WebArgumentResolver
- 也许您可以自定义解析参数并在调用控制器之前处理它们?org.springframework.web.servlet.HandlerInterceptor
具有“postHandle”方法,可以让您访问请求、处理请求的控制器和ModelMap。那应该就是您所需要的全部内容。如果您需要一些来自控制器的控制,您可以始终向其中添加元数据,指示例如它使用哪个类的标头(然后在将来当您不得不更改它时,它只是一个xml或注释中的一个字符串,而不是更改您继承的类以及所有相关内容)。<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<bean class="a.package.MyHandlerInterceptor"/>
</list>
</property>
</bean>