0

Grails 2.2.3 で、Spring Security が追加された login/auth.gsp ビューが実行時にブラウザに表示されない、grails run-warまたはgrails warTomcat サーバーにデプロイするという問題が発生しています。ただし、またはを実行すると表示され、正常に動作しgrails run-appますgrails prod run-appgrails clean依存関係を再コンパイルして更新するだけでなく、何度か実行しました。

注意すべき点がいくつかあります。

  • 私のlogin/auth.gspビューは、私が使用しているカスタム UI プラグインにあります。BuildConfig.groovyこれは、インプレース プラグインとしてプロジェクトファイルにあります。
  • 私のmain.gspテンプレートもそのカスタム UI プラグインに含まれています。

ブラウザは HTTP 404 を返します。

type Status report

message /processes/WEB-INF/grails-app/views/login/auth.jsp

description The requested resource is not available.

この問題が何であるか、またはどのように修正できるかを知っている人はいますか?

4

4 に答える 4

2

私の記憶が正しく、完全に間違っていなければ、作業中のプロジェクトでまったく同じ問題が発生しました。

問題は、プラグインに 2 つのバージョンが設定されていたことです (おそらく皆さんも同じでしょう)。

1つはapplication.propertiesに設定されました

app.version=0.1

プラグイン記述子に1つのセットがあったよりも

def version = "0.1"

application.properties からバージョン宣言を削除すると、機能するはずです。プラグインのバージョンはプラグイン記述子で設定され、プロジェクトのバージョンは application.properties で設定されます。どのようにして 2 つのバージョン宣言になったのかはわかりませんが、コピーと貼り付けのミスが原因か、Grails がプラグインの application.properties をapp.version.

于 2013-10-30T21:47:47.453 に答える
1

このスレッドを読んだ後でも、これは数日間私を夢中にさせました。

私はGrails 1.3.7を使用しており、ベンダーから提供されたいくつかのプラグインをgitリポジトリから取得しています。最近、git から新しいバージョンを取得していくつかのプラグインをアップグレードしたところ、この問題が発生しました。実行するgrails warと、プラグインがビルドされ、各プラグインのルートに plugin.xml ファイルが作成されるようです。plugin.xml のメタデータには、プラグインのバージョンが含まれています (明らかに xxxGrailsPlugin.groovy ファイルから取得されます)。plugin.xml のバージョンは、プラグイン コードが war に格納されるフォルダーの名前付けに使用されます。Grails が plugin.xml ファイルを再生成しないように見えるため、プラグインのバージョンを変更すると問題が発生します。 grails cleanトリックを行いません。これにより、新しいバージョンのプラグインが古いバージョンをフォルダー名の一部として war に保存されます。

プラグインを調べてすべての plugin.xml ファイルを削除したら、Tomcat にデプロイして war によって正常に再構築し、404 を取得できませんでした。

于 2014-02-28T19:18:57.980 に答える
0

私はそれを「修正」しましたが、なぜこれが機能したのか完全に途方に暮れています。

インプレース プラグインのバージョンを「0.1」から「1.0」に上げたことを思い出しました。それ以来、戦争を構築するとアプリが機能しなくなりました。プラグインのバージョンを 1.0 から 0.1 に戻すと、問題が修正されました。

なぜこれが機能したのか誰でも説明できますか? UI プラグインもクリーンアップして再コンパイルしましたが、バージョンを下げるまで機能しませんでした。

于 2013-10-30T20:20:11.027 に答える
0

プラグインを使用してリソースを提供する場合は、プロパティを追加する必要がありpluginます。このプロパティは、ほとんどの Grails タグ/メソッドで使用できます。my-plugin というプラグインを考えてみましょう。

リソースを使用するには:

g.resource(dir: "js", file:"myPluginJs.js", plugin: "myPlugin")

プラグイン ビューをレンダリングするには:

render(view: 'path/to/view', plugin: "myPlugin")

これは、プラグイン リソース ファイルを宣言する場合にも当てはまります。

modules = {
  "my-plugin-module" {
    resource url: '/js/app.js', plugin: 'myPlugin'
  }
}
于 2013-10-30T19:22:20.637 に答える