グローバルスコープにオブジェクトを追加したいのですが、それを構築するには、ファイルへのパスを渡す必要があります。ソースのファイルパスをハードコーディングしたくないので、application.confからそのパスを取得します。
問題は、Javaクラスからこれらのプロパティにアクセスする方法がわからないことです。これを試しました。
Configuration.root().getString("file.path")
しかし、それはNullPointerExceptionで終わります。
使用できるグローバルな構成インスタンスがあると仮定するのは間違っていますか?ありがとう。
Play.application().configuration().getString("your.key")
を試してください
コメント(nico_ekito)に記載されているように、play.Play
およびplay.api.Play
。 play.api.Play
はscalaコントローラー用です(Marcus biesior Biesioroffのコメントを参照)
さらに、playは内部で https://github.com/typesafehub/config を使用するため、いくつかの洞察も提供できます。
簡単に思えても、構成ファイルからプロパティを取得するscalaの方法は次のとおりです。
Play 2.0および2.1:
import play.api.Play.current
...
Play.application.configuration.getString("your.key")
2.2と+を再生
import play.api.Play.current
...
current.configuration.getString("your.key")
Typesafe configを使用
import com.typesafe.config.ConfigFactory
...
ConfigFactory.load().getString("your.key");
Play 2.4 and +
から、依存関係注入を使用して構成にアクセスすることをお勧めします。
import play.Configuration;
import javax.inject.Inject;
@Inject
private Configuration configuration;
...
String value = configuration.getString("your.key");
Play 2はTypesafe構成ライブラリを使用しているため、application.confで次のように変数にアクセスしました。
ConfigFactory.load().getString("my.var");
劇中Javaは:
import play.Play;
...
Play.application().configuration().getString("key")
次のように使用します(Play 1.2.5でテスト済み)
${play.configuration.getProperty('my.var')}
my.varはapplication.confファイルで指定する必要があります
テンプレートからアクセスするための参照として(play <2の場合)
play.configuration['your.key']
人々が言及したように、Play.application.configuration
もはや存在しない。
In Play Scala 2.3.x、conf/application.conf
、次のことができます。
import play.api.Play.current
...
current.configuration.getString("key")
これをインポート
import com.typesafe.config.Config;
以下の行を書きます
private Config config;
this.config = ConfigProvider.config();
String value = this.config.getString("fieldFromConfigFile");
import play.Play; String myVal = Play.configuration.getProperty("your.key").toString();
私は自分のアプリでこれを使用して動作します
Play.Playをインポートすることを忘れないでください。それがあなたを助けることを願っています
Play 1.2.xで
import play.Play;
...
String version = Play.configuration.getProperty("application.version.number", "1.1.1");
ここで、2番目のパラメーターはデフォルト値です
バージョン2.5からは、注入する必要があるplay.Applicationクラスを使用してからapplication.config().getString("your.property.here")