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>

最初のインデックス ページには、 no controller が表示されています。次に、別のコントローラー、たとえば TodosControllerを作成します。このコントローラー名はなんとなくナイスなので、(もちろん Intellij IDEA のリファクトリー機能を使って) TodoListController にリネームしたいと思います。残念ながら、コードにはまだ 2 つのコントローラーが残っており、インデックス ページに表示されています。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ファイルがなくなっても)。コンポーネント スキャンは引き続きクラス パスからクラスを選択し、最終的には 2 つのコントローラーになります。

于 2016-03-31T16:19:35.883 に答える