2013-04-22 50 views

回答

1

你可能會有點模仿。在before閉包中,您可以檢查請求,會話等,並確定是否繼續常規呼叫。如果您希望可以重定向或在過濾器中提供響應,並返回false以指示不應調用控制器。

如果您想允許控制器繼續,您可以在after關閉中工作。您可以將信息存儲在before關閉中的請求範圍中(例如request.currentRequestNumber = counter.incrementAndGet()),並利用使用屬性訪問來存儲和檢索請求屬性,從而在after關閉中(例如int currentRequestNumber = request.currentRequestNumber)檢索它。

然而,您不能「調用」控制器並檢查其結果,並選擇是發送該響應,還是修改它,或發送不同的響應。儘管你可以用響應包裝來做到這一點,但你有一個自定義編寫器來捕獲呈現的響應。

請注意,使用常規servlet過濾器(即實現javax.servlet.Filter並在web.xml中註冊的類)可以獲得更多靈活性(但Grails/Groovy幫助更少)。