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.
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.
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");
À 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");
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");
Dans le jeu, Java est:
import play.Play;
...
Play.application().configuration().getString("key")
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
En tant que référence pour y accéder depuis le modèle (pour jouer <2)
play.configuration['your.key']
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")
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");
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
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