0

web-app/に「templates」というフォルダがあります。ローカルで「run-war」を実行すると、これはうまく機能します。

new File('web-app/templates/').list()

フォルダ内のファイルを一覧表示できます。しかし、warファイルをリモートのTomcatにデプロイすると、リストは空になります。フォルダをwarファイルにコピーするようにgrailsに明示的に指示する必要がありますか?

4

2 に答える 2

3

おそらく、あなたが探しているのは次のとおりです。

def baseFolder = grailsAttributes.getApplicationContext().getResource("/").getFile().toString()

def dirList= new File(baseFolder + "/templates").list()

これは、TomcatにWARをデプロイするときに機能しました。私の場合、baseFolderは私のアプリのweb-appディレクトリへの絶対パスでした。

http://googolflex.com/?p=664を参照してください

于 2012-11-14T15:38:20.103 に答える
0

コードは、「分解される」warファイル(構成に応じてTomcatにある場合とない場合があります)と、コンテナーがアプリケーションの「現在のディレクトリ」として設定するものの両方に大きく依存します。

IIRC、Java EE仕様では、ファイルシステム内で直接安全にアクセスできる唯一の場所は、System.getProperty( "java.io.tmpdir")で識別される一時ディレクトリであるとされています。

もちろん、多くのアプリケーションはそれ以外のことをしますが、それは非標準であり、したがって壊れやすいものです。

最も安全な方法は、テンプレートディレクトリをクラスパス(つまり、warファイルのWEB-INF / classesディレクトリの下のツリーのどこかに)に配置し、ClassLoaderとそのfindResourceおよびgetResourceメソッドを介してそれらにアクセスすることです。

于 2012-11-14T14:55:54.397 に答える