我在实时服务器上有一个奇怪的错误。它仅发生在特定操作(搜索)上。我无法在本地重现它(我使用 运行代码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 标记。
再次注意,所有这些都可以在本地和测试服务器上正常工作。我完全被难住了。