我經常寫類似:如何從過濾器訪問命令對象,它有可能嗎?
def myAction{ MyActionCommand cmd ->
if(cmd.hasErrors()){
return render(status:HttpServletResponse.SC_BAD_REQUEST);
}else{
// actual action logic
}
所以,我想提取普通模式到一些可重複使用的位置。過濾器看起來很不錯,但是我找不到從過濾器獲取命令對象的方式。嘗試這樣的東西(在過濾器封閉):
formValidation(controller:'*', action:'*'){
before = { cmd ->
if(cmd.hasErrors()){
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
return false;
}else{
return true;
}
}
}
intersted在grails 1.3.7兼容的解決方案。它有可能嗎?
另外,如果你不介意做一個插件,你可以在方法封裝這一它會自動添加到所有控制器,所以它只會是'onValid(cmd){...}',而沒有該服務。 – OverZealous
另一個選項 - 而不是插件,爲您的控制器創建基類,並從中繼承。然後,你也可以使它成爲一個簡單的方法調用,就像上面一樣。 – OverZealous