grails アプリケーションの最初のページでログインとログアウトを行い、そこにエラー メッセージを表示したいと考えています。ログアウト機能とともに、ユーザードメインにコーディングされた認証機能があります。誰かが認証機能にログインした後、リダイレクトを実行してメイン画面に戻すことができます。
redirect(uri:"")
ログアウトで同じことをすると、ページがレンダリングされたときに、ユーザー オブジェクトが見つからないというエラーが表示されます。以下は出力です。
エラー 500: コントローラー [com.thornglatch.pingo.UserController] のアクション [ログアウト] を実行すると、例外が発生しました: そのようなプロパティはありません: クラスの名前: com.thornglatch.pingo.User 考えられる解決策: ゲーム サーブレット: grails URI: /Pingo/grails /user/logout.dispatch 例外メッセージ: そのようなプロパティはありません: クラスの名前: com.thornglatch.pingo.User 考えられる解決策: ゲーム 原因: そのようなプロパティはありません: クラスの名前: com.thornglatch.pingo.User 考えられる解決策: ゲームクラス: UserController 行: [25]
レンダリングしようとしているものは次のとおりです。
<div id="menu">
<nobr>
<g:if test="${session.user}">
<b>${session.user?.firstName} ${session.user?.lastName}</b> |
<g:link controller="user" action="logout">Logout</g:link>
</g:if>
<g:else>
<g:link controller="user" action="login">Login</g:link>
</g:else>
</nobr>
</div>
お時間をいただきありがとうございます。
認証コードは次のとおりです。
def authenticate = {
println "Authenticate Entered"
def user = User.findByLoginAndPassword(params.login, params.password)
println "User = [" + user + "]"
if (user) {
session.user = user
def name = user.firstName ?: user.lastName
flash.message = "Hello ${user.login}"
redirect(uri:"")
} else {
println "Should be saying sorry"
flash.message = "Sorry, ${params.login}. Please try again.}"
redirect(uri:"")
}
} // authenticate
このバージョンは機能します。そうでないものでは、flash.message 行は次のとおりです。
flash.message = "Hello ${name}"
私はこれに耐えることができますが、名前の使用が機能しなかった理由を知りたいです。