4

src/main/resourcesJSF プロジェクト内にプロパティ ファイルを配置しました。

どうすればそれを処理できますか?バッキング Bean 内では EL が機能しないことを理解しています。

注:ファイルはsrc/main/resources- NOTsrc/main/webapps/resourcesにあるため、以下は機能しません。

FacesContext context = FacesContext.getCurrentInstance();
File value = context.getApplication().evaluateExpressionGet(context, "#{resource['resources:email.properties']}", File.class);
4

1 に答える 1

8

したがって、それはクラスパスにあります。あなたはそれClassLoader#getResourceAsStream()から抜け出すために使うことができInputStreamます。srcそれがクラスパスルートであり、それmain/resourcesがパッケージであると仮定します。

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("main/resources/foo.properties");
Properties properties = new Properties();
properties.load(input);
// ...

または、Webアプリケーションに固有であると想定されているため、クラスパス内の他の場所でクラスロードの優先順位が高い(たとえば、appserverのlibまたはJREのlib内の)同じパス上のファイルによってオーバーライド可能ではない場合は、次を使用します。ExternalContext#getResourceAsStream()代わりは。

InputStream input = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("main/resources/foo.properties");
Properties properties = new Properties();
properties.load(input);
// ...

構文に関して#{resource}は、これは実際/resources、パブリックWebコンテンツのフォルダーに配置されたCSS /JS/画像リソース専用です。FaceletsテンプレートでCSS/JS/画像リソースを参照する方法も参照してください。

于 2012-05-14T19:49:50.673 に答える