2015-11-08 115 views
1

我们有一种情况,控制器必须始终在每个请求中执行,以在我们执行所需控制器的模型中设置一些默认值。如何设置主控制器始终执行,包括其他控制器在同一请求中?如何在Spring MVC中创建一个主控制器

回答

3

你可以做一个基本的控制器类,与getscalled在每次请求一个@ModelAttribute注解的方法,实际处理方法之前,如

@ModelAttribute 
public void everyRequest(WebRequest request, Model model) { 
    model.addAttribute("default", true); 
} 

留下所有这就是是从您的实际扩展这个基控制器类控制器

如果您使用的是Spring 4.x,更好的方法是使用支持所有组件或所选组件的@ControllerAdvice,可用于添加模型属性,应用通用初始化绑定或错误处理。一个例子

@ControllerAdvice 
class Advice { 

    @ModelAttribute 
    public void everyRequest(Model model) { 
     model.addAttribute("default", true); 
    } 

} 
+0

谢谢第一次尝试 – Kronass

0

使用Spring HandlerInterceptor #preHandle,它提供了你访问Handler这可能是有用的,还为您提供了排除一些controllers的调用的力量。

<mvc:interceptor> 
    <mvc:mapping path="/**"/> 
    <mvc:exclude-mapping path="/admin/**"/> 
    <bean class="com.test.yourInterceptorClass" /> 
</mvc:interceptor> 
相关问题