2010-12-08 17 views
2

ライブサーバーに奇妙なバグがあります。特定のアクション(検索)でのみ発生します。ローカルで(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タグ。

これは、ローカルでもテストサーバーでも問題なく動作します。私は完全に困惑している。

答えて

0

UrlMapping.groovyはどのように見えますか?それを修正しましたか? また、代わりに<g:link><g:createLink ...>タグを使用して試してみて、「絶対」のparamで遊ぶ: http://grails.org/doc/1.0.x/ref/Tags/createLink.html

0

エラー「オブジェクトがクラスを宣言するのインスタンスではない」とは、通常、環境問題に関連しています。サーバのJVMとTomcatのバージョンを確認してください。

生産と開発に同じJVMバージョンを使用してください。

関連する問題