私はしばしばのような何か書く:だからフィルタからコマンドオブジェクトにアクセスする方法は、まったく可能ですか?
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;
}
}
}
グレーズ1.3.7互換の解決策では、まったく可能ですか?
また、プラグインを作る気にしないならば、あなたはこの方法でこれをカプセル化することができそれは自動的にすべてのコントローラに追加されるので、サービスを持たずに 'onValid(cmd){...}'になります。 – OverZealous
もう1つのオプション - プラグインの代わりに、コントローラの基本クラスを作成し、それを継承します。上のように単純なメソッド呼び出しにすることもできます。 – OverZealous