2013-04-27 37 views
1

在我的系統中,我在Spring MVC + Apache Tiles + JSPX中開發了幾個控制器中的Spring一個ModelAttribute

我想把登錄表單放在每一頁。在登錄過程中,我想用@ModelAttribute("loginModel") LoginDTO

在Spring文檔頁面我紅,我必須在每一個控制器,在這裏我想顯示該模型是這樣定義一個方法:

@ModelAttribute("loginModel") 
public LoginDTO loginModel() { 
    return new LoginDTO(); 
} 

有任何我定義它只有一個控制器的方式,並在我寫入登錄表單jsp的每個頁面中工作?

謝謝你的answare!

+2

投票的重複問題已刪除 – 2015-02-15 21:36:31

回答

5

如果您使用的是Spring 3.2或更高版本,則可以使用新的@ControllerAdvice註釋。 從@ModelAttribute文檔:

@ModelAttribute方法也可以在@ ControllerAdvice註解類,這些方法定義適用於所有控制器。 @ControllerAdvice註解是一個組件註釋,允許通過類路徑掃描來自動檢測實現類。

在你的情況,我想這將是這個樣子:重新

@ControllerAdvice 
public class GlobalControllerAdvice { 

    @ModelAttribute("loginModel") 
    public LoginDTO loginModel() { 
     return new LoginDTO(); 
    } 
} 
0

您可以使用您的loginModel製作抽象控制器,並對您想要使用登錄表單的每個控制器進行擴展,此抽象控制器應該沒有@Controller,所有子類都必須包含@Controller。