ライブサーバーに奇妙なバグがあります。特定のアクション (検索) でのみ発生します。ローカルで再現することはできません (コードを使用して実行する場所grails run-app
)。また、実稼働サーバーとまったく同じ方法で Tomcat を実行するテスト サーバーで再現することもできません。本番データベースをローカルにコピーしましたが、まだエラーを再現できません。唯一の設定の違いは、メールが有効になっていることと、その他のマイナーなものであり、ここでは関係がないようです。
「オブジェクトは宣言クラスのインスタンスではない」という意味がわからないため、どこを見ればよいかわかりません。またはもっと重要なのは、なぜこれが本番サーバーでのみ問題になるのかということです。完全なエラーは次のとおりです。
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]
41 行目あたりの .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 行目は最後の g:link タグです。
このすべてがローカルでもテスト サーバーでも正常に機能することに注意してください。私は完全に困惑しています。