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

你的 UrlMapping.groovy 看起来如何?你修改了吗?另外,尝试使用 <g:createLink ...>标签而不是<g:link>使用“绝对”参数: http: //grails.org/doc/1.0.x/ref/Tags/createLink.html

于 2011-03-24T17:03:56.570 回答
0

错误“对象不是声明类的实例”通常与环境问题有关。检查服务器中的 JVM 和 tomcat 版本。

尝试使用相同的 JVM 版本进行生产和开发。

于 2013-06-19T18:46:08.057 回答