2013-04-10 59 views
1

問題定義 我有一個指向說的myapp/doStuff春 - 基於標記選擇控制器

目前,我有一個Spring控制器來處理這個請求..鏈接說doStuffOld

然而現在我需要做一個新的項目 1.添加一個依賴於日期的標誌 - dateFlag(假如日期爲< 10-Sep else true) 2.創建一個新的控制器doStuffNew 3.對於相同的url(myapp/doStuff)如果dateFlag爲false,則需要使用doStuffOld,否則使用doStuffNew

什麼是在春天實現這一目標的最佳方法。 注意:URL來自應用程序外部,不能更改。

回答

1

你可以做request forwarding

boolean dateFlag = Boolean.getBoolean(request.getParameter("dateFlag")); //Get the dateFlag value in the `doStuff` handler method 

if(dateFlag){ 
    request.getRequestDispatcher("doStuffOld").forward(request, response); 
    return null; 
} 

在你myapp/doStuff處理程序可以檢查該標誌,並請求轉發到新網址(doStuffOld),你可以使用params選項。

如果RequestMapping另一種解決方案是使用,你可以不希望被稱爲舊處理doOldStuff

@RequestMapping(value="doStuff", params="dateFlag=true") 
public ModelAndView doStuff(HttpServletRequest request, HttpServletResponse response){ 
    .... 
} 

@RequestMapping(value="doStuff", params="dateFlag=false") 
public ModelAndView doOldStuff(HttpServletRequest request, HttpServletResponse response){ 
    .... 
} 
+0

我同意我能做到這一點,但是客戶有嚴格的要求,只有正確的控制器應調用。所以基本上沒有從1控制器重定向到另一個。我試圖弄清楚這個 – user1812652 2013-04-10 03:24:15

+0

@ user1812652的可行性是否需要舊處理程序必須被稱爲'doOldStuff' – 2013-04-10 03:25:58

+0

,哪個是使用'RequestMapping'註釋來映射請求處理程序的彈簧版本 – 2013-04-10 03:27:06