ライブサーバーに奇妙なバグがあります。特定のアクション(検索)でのみ発生します。ローカルで(grails run-app
を使用してコードを実行する)ローカルでは再現できません。また、プロダクションサーバーとまったく同じ方法でTomcatを実行するテストサーバーでは再現できません。本番データベースをローカルにコピーしましたが、エラーを再現できません。唯一の設定の違いは、メールが有効になっていることとその他のマイナーなものです。GrailsエラーはTomcatサーバー上でのみ発生します。ローカルで再現性がありません:タグを実行中にエラーが発生しました<g:link>:オブジェクトがクラスを宣言するインスタンスではありません
「オブジェクトがクラスを宣言するインスタンスではない」という意味がわからないので、どこを見てもわかりません。さらに重要なのは、なぜこれがプロダクションサーバー上でのみ問題になるのかということです。ここでは、完全なエラーがあります:行41の周り
Error 500: Error processing GroovyPageView: Error executing tag <g:link>: object is not an instance of declaring class at /WEB-INF/grails-app/views/dealer/list.gsp:41
Servlet: grails
URI: /grails/dealer/list.dispatch
Exception Message: object is not an instance of declaring class
Caused by: Error processing GroovyPageView: Error executing tag <g:link>: object is not an instance of declaring class at /WEB-INF/grails-app/views/dealer/list.gsp:41
Class: gsp_quotations_dealerlist_gsp
At Line: [72]
.gspコードは次のとおりです。
<g:each in="${dealerInstanceList}" status="i" var="dealerInstance">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td><g:link action="show" id="${dealerInstance.id}">${fieldValue(bean:dealerInstance, field:'name')}</g:link></td>
<td><g:link action="show" id="${dealerInstance.id}">${fieldValue(bean:dealerInstance, field:'address')}</g:link></td>
<td><g:link controller="quoteSettings" action="adminEdit" id="${dealerInstance.id}">${dealerInstance?.quoteSettings?.pricingTables?.size() > 0}</g:link></td>
</tr>
</g:each>
ライン41の最後グラムです:linkタグ。
これは、ローカルでもテストサーバーでも問題なく動作します。私は完全に困惑している。