Столовая может быть сделана не по назначению
Я новичок, пытающийся изучать 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'
Снимок ошибки приведен ниже. Я провожу много раз, чтобы выяснить, где это, но со мной не происходит ничего волшебного. Кто-нибудь получил такую ситуацию?
1 ответ
Похоже, ты немного запутал Грааля. В этом случае лучше всего остановить приложение и запустить clean
команду и попробуйте снова. Причина в том, что Grails скомпилировал ваш начальный контроллер в build
каталог, где .class
файл все еще остается (даже когда .groovy
файл пропал). Сканирование компонента по-прежнему выбирает класс из пути к классу, и в итоге вы получаете два контроллера.