重构可能是不正确的

时间:2016-03-31 15:55:50

标签: grails intellij-idea controller grails-3.1 urlmappings.groovy

我是初学者,正在尝试学习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'

错误的快照如下。 Could not resolve view 我花了很多次去找出它的位置,但没有任何神奇的事情发生在我身上。 有人有这样的情况吗?

1 个答案:

答案 0 :(得分:3)

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