2015-11-08 53 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> 
相關問題