我是初学者,正在尝试学习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'
答案 0 :(得分:3)
听起来你有点混淆Grails。在这种情况下,最好的办法是停止应用程序并运行clean
命令,然后重试。原因是,Grails将您的初始Controller编译到build
目录中,.class
文件仍然存在(即使.groovy
文件已经消失)。组件扫描仍然从类路径中选择类,最后得到两个控制器。