0

いくつかのドメインモデル、コントローラー、およびそれらのサービスを備えた単純な grails(2.0.3) アプリケーションがあります。保存して別のマシンで実行しようとすると、奇妙な動作が発生します。

インデックス ページに生成されたコントローラー リンクは正しいように見えますが、クリックすると、localhost:8080/appname/controller/action ではなく 404 で localhost:8080/appname/appname にリダイレクトされます。

しかし、「grails generate-domain-class」を使用してモデルを手動で再作成しようとすると、コントローラーを生成してサービス クラスを作成すると、正常に動作します。移動後に一部のプロジェクト データが失われたか、プロジェクト フォルダ以外の場所に保存されているようです。

作業中のプロジェクトを 1 番目のマシンで保存し、2 番目のマシンで再度開くにはどうすればよいですか? 私のアプリケーションは、IDE を使用せずに、コマンド ラインとテキスト エディターだけで作成されます。

編集

プロジェクトを別のマシンに移動せずに、不要なコードをすべて投稿せずにこの動作を再現しようとした後、同じ結果になりました。

注入されたサービスを使用するコントローラーを作成するとき(これを読んだ後):

class BookController {

    def bookService

    def index() {
        redirect(action: "list", params: params)
    }

    def list() {
        def result = bookService.list(params)
        if(!result.error) {
            return [ bookInstanceList: result.bookInstanceList,
                bookInstanceTotal: result.bookInstanceTotal ]
        }
        flash.message = g.message(code: result.error.code, args: result.error.args)
        redirect( url: resource(dir:'') )
    }
}

インデックス ページで生成されたコントローラー URL にアクセスし、404 で localhost:8080/appname/appname を取得しようとしました。grails コンソールにエラー メッセージは表示されません。

4

1 に答える 1

0

プロジェクトを別のマシンに移動した後にgrailsの問題が発生した場合、2つのことが役立つことがわかりました。最初は実行することです

grails upgrade

プロジェクトをアップグレードするかどうかを確認するメッセージが表示されたら、「はい」と言います。これを行うと、移動していない可能性のある欠落している構成ファイルが書き換えられます。2番目は実行することです

grails clean

これにより、古いシステムから新しいシステムに移動した可能性のあるコンパイル済みクラスがすべて削除されます。

于 2012-05-07T12:52:50.403 に答える