0

Я начинаю пытаться узнать Grails 3.1. Что касается по умолчанию, добавить следующую царапину на индексной странице:refactory может быть сделано небыстро

<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. Поскольку это имя контроллера не так красиво, поэтому я хочу переименовать его (конечно, используя refactory feature в Intellij IDEA) в TodoListController. К сожалению, код по-прежнему остается двумя контроллерами и показывает их на индексной странице. Когда я нажимаю на ссылку TodosController, я получаю ошибку:

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

Снимок ошибки ниже. Could not resolve view Я провожу много раз, чтобы узнать, где это, но со мной не происходит ничего волшебного. Кто-нибудь получил такую ​​ситуацию?

+0

Остановите свое приложение и запустите команду 'clean' для Grails. Посмотрите, исправляет ли это это. –

+0

@JoshuaMoore: Очистка устраняет мою проблему. Благодаря! – Tung

+0

Не беспокойтесь, добавив его в качестве ответа, так как он решил вашу проблему. –

ответ

3

Похоже, вы немного смутили Grails. Лучше всего в этом случае остановить приложение и запустить команду clean и повторить попытку. Причина в том, что Grails скомпилировал ваш начальный контроллер в каталог build, где файл .class все еще остается (даже если файл .groovy отсутствует). Сканирование компонентов по-прежнему выбирает класс из пути класса, и вы получаете два контроллера.