ユーザー入力が不適切な場合などのエラーは、ドメインまたはコマンドオブジェクトの検証を使用して常に合理的にチェックできるとは限りません。
たとえば、「パスワードを忘れた」機能を作成するときに、ユーザーがデータベースに存在しないユーザー名を入力した場合に適切なメッセージを表示したいと思います。したがって、コントローラーのアクションは次のようになります
...
def user = User.find{name==uname}
if(!user) {
// user not found in db, output error and render view again
render view: 'forgotPassword'
return
}
// do reset password stuff
...
<g:hasErros>
タグ内のビューにエラーを表示するにはどうすればよいですか?
flash.message
(生成されたコントローラー/ビューが行うように)私は単に情報メッセージを表示しているだけでなく、エラーメッセージを表示しているため、私には正しくないようです。<g:hasErros>
そのため、メッセージはタグで処理され、ドメイン検証エラーのように表示される必要があると思います。(ユーザーにとっては、同じフィードバックレベルです:「入力が間違っているために機能しませんでした」。
コマンドオブジェクトの作成@Validateable
も正しくないようです。IMHO、データベースに対して値をチェックすることは、実際にはコマンドオブジェクト内の検証の責任ではありませんか?またはそれは?それから、それは私には少し複雑すぎるようです。
それで、行くための最良の方法は何ですか?他のフレームワーク(Wicketなど)は、ビュー内のフィードバックメッセージを簡単に処理できるようerror(String msg)
にするなどの個別のメソッドを提供します。info(String msg)
Grailsにも同様の概念がありますが、私はまだ見つけていませんか?