web-dev-qa-db-fra.com

Accéder aux propriétés application.conf de la classe Java avec Play! 2.0

Je veux ajouter un objet à la portée globale, et pour le construire, je dois lui passer un chemin d'accès à un fichier . Je ne veux pas coder en dur le chemin d'accès au fichier dans la source, et je veux donc pour obtenir ce chemin depuis le application.conf.

Le problème est que je ne sais pas comment accéder à ces propriétés depuis la classe Java ..__J'ai essayé ceci:

Configuration.root().getString("file.path")

Mais cela se termine par un NullPointerException .

Ai-je tort de supposer qu'il existe une instance de configuration globale que je peux utiliser? Merci.

55
Nitzan Tomer

Essayez Play.application().configuration().getString("your.key")

Comme indiqué dans le commentaire (nico_ekito), veuillez utiliser play.Play et non play.api.Play. play.api.Play est pour les contrôleurs de scala (voir le commentaire de Marcus biesior Biesioroff)

De plus, play utilise https://github.com/typesafehub/config sous le capot afin de fournir des informations utiles. 

80
Nasir

Même si cela semble simple, voici la méthode scala pour obtenir les propriétés du fichier de configuration: 

Jouer 2.0 et 2.1 :

import play.api.Play.current
...
Play.application.configuration.getString("your.key")

Jouez 2.2 et +

import play.api.Play.current
...
current.configuration.getString("your.key")

Utilisation de la configuration Typesafe

import com.typesafe.config.ConfigFactory
...
ConfigFactory.load().getString("your.key");
51
i.am.michiel

À partir de Play 2.4 and +, il est préférable d'utiliser l'injection de dépendance pour accéder aux configurations:

import play.Configuration;
import javax.inject.Inject;


@Inject
private Configuration configuration;

...

String value = configuration.getString("your.key");
36
Saeed Zarinfam

Puisque Play 2 utilise la bibliothèque de configuration Typesafe, j'ai accédé à mes vars dans application.conf comme ceci:

ConfigFactory.load().getString("my.var");
12
Cyril N.

Dans le jeu, Java est:

import play.Play;
...
Play.application().configuration().getString("key")
3
Alfaville

Utiliser comme suit (Testé en jeu 1.2.5)

${play.configuration.getProperty('my.var')}

où my.var doit être spécifié dans le fichier application.conf

2
Rajesh

En tant que référence pour y accéder depuis le modèle (pour jouer <2) 

play.configuration['your.key']
1
fmsf

Comme les gens l'ont mentionné, Play.application.configuration n'existe plus.

Dans Play Scala 2.3.x, pour lire une valeur à partir de conf/application.conf, vous pouvez effectuer les opérations suivantes:

import play.api.Play.current
...
current.configuration.getString("key")
1
cmd

Importer cette

import com.typesafe.config.Config;

et écrivez les lignes ci-dessous

private Config config;
this.config = ConfigProvider.config();
String value = this.config.getString("fieldFromConfigFile");
0
Atul Chavan

import play.Play; String myVal = Play.configuration.getProperty("your.key").toString();

je l'utilise dans mon application et cela fonctionne

N'oubliez pas d'importer play.Play. J'espère que ça va vous aider

0

En jeu 1.2.x

import play.Play;
...


String version  = Play.configuration.getProperty("application.version.number", "1.1.1");

où le second paramètre est la valeur par défaut

0
xyz