Grails使控制器可以很容易地調用服務,並使控制器可以將請求轉發到另一個控制器。服務調用回控制器?
所以假設你有一個服務方法等
List<String> updateNames() {
...
}
你可以很容易的把它從任何控制器。
我想知道,如果你有一個邊緣情況,你意識到你的服務方法有驗證問題。你不想把異常拋回到你的控制器中,因爲它不是一個特例。但是你不能從你的服務返回一個錯誤消息到被調用的Controller,因爲這意味着你必須使用一些包裝對象而不是一個好的列表
有沒有反正這些情況下,你可以得到服務做一個服務器端轉發到另一個控制器,它可能會返回一個錯誤響應給用戶?
謝謝。
這對我來說似乎是一個例外的理想用例... –
同意Sèrgio和Joshua。所有驗證異常都可以在使用命令對象或域實例本身進入服務類之前進行處理。正如約書亞提到關於分離問題,服務不應該知道http調用或任何驗證問題。它應該關心業務異常/場景。話雖如此,拋出運行時異常或服務錯誤將是我會做回滾事務的最後一件事。我們應該使用['TransactionAspectSupport'](http://stackoverflow.com/a/17357547/2051952)來處理回滾。 – dmahapatro
@Ian Roberts爲什麼?這是您期望可能發生的情況,用戶可能會輸入錯誤的數據。你的系統本身沒有任何問題。 –