2

ライブサーバーに奇妙なバグがあります。特定のアクション (検索) でのみ発生します。ローカルで再現することはできません (コードを使用して実行する場所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 タグです。

このすべてがローカルでもテスト サーバーでも正常に機能することに注意してください。私は完全に困惑しています。

4

2 に答える 2

0

エラー「object is not an instance of declaring class」は通常、環境の問題に関連しています。サーバーで JVM と tomcat のバージョンを確認します。

本番環境と開発環境で同じ JVM バージョンを使用してみてください。

于 2013-06-19T18:46:08.057 に答える
0

UrlMapping.groovy はどのように見えますか? あなたはそれを変更しましたか?また、 「絶対」パラメータの <g:createLink ...>代わりにタグを使用してみてください: http://grails.org/doc/1.0.x/ref/Tags/createLink.html<g:link>

于 2011-03-24T17:03:56.570 に答える