0

我是一名尝试学习 Grails 3.1 的初学者。关于默认值,我在索引页面上添加以下划痕:

<ul>
    <g:each var="c" in="${grailsApplication.controllerClasses.sort { it.fullName } }">
        <li class="controller">
                        <g:link controller="${c.logicalPropertyName}">${c.fullName}</g:link>
        </li>
    </g:each>
</ul>

一开始,索引页没有显示控制器。然后,我创建另一个控制器,例如TodosController。因为这个控制器名称在某种程度上不太好,所以我想将它(当然,使用 Intellij IDEA 中的重构功能)重命名为TodoListController。不幸的是,代码仍然保留了两个控制器并在索引页面中显示它们。当我单击TodosController的链接时,出现错误:

Could not resolve view with name '/todos/index' in servlet with name 'grailsDispatcherServlet'

错误快照如下。 无法解析视图 我花了很多时间找出它在哪里,但没有什么神奇的事情发生在我身上。有人遇到这种情况吗?

4

1 回答 1

3

听起来你有点混淆了 Grails。在这种情况下,最好的办法是停止您的应用程序并运行clean命令并重试。原因是,Grails 将您的初始 Controller 编译到build该文件仍然存在的目录中.class(即使.groovy文件已消失)。组件扫描仍然从类路径中选择类,最终得到两个控制器。

于 2016-03-31T16:19:35.883 回答