在Play 2.1应用程序中,如何以编程方式确定应用程序在哪种模式下运行(即开发与生产)?
例如,能够在模板中执行这样的操作是有用的:
<p>@if(__some_play_API_call__ == Dev) { <b>Development mode</b> }</p>
在Play 2.0API文档中,似乎有一个mode属性属于play.api.Application类.但是,我不确定如何获得当前正在运行的应用程序的实例。
发布于 2013-01-30 20:40:54
您可以通过以下方式访问当前应用程序
play.api.Play.current()要找出模式,请尝试
play.api.Play.current().mode()或者简单地使用
play.api.Play.isDev(play.api.Play.current())发布于 2016-08-07 16:52:27
在Play 2.5.x中,不推荐使用play.Play.isDev()方法,必须使用依赖注入
import javax.inject.Inject;
public class Example {
@Inject
private play.Environment environment;
public void myMethod() {
if (environment.isDev()) {
...
}
}
}或在Scala中等效:
class ErrorHandler @Inject()(environment: Environment) {
def myMethod() = {
if (environment.isDev) {
...
}
}
}environment.isDev()返回一个布尔值,它可以很容易地传递给一个模板。不需要像描述的这里那样使用隐式变量。
发布于 2018-03-07 10:57:57
使用Play 2.5,Play 2.6和Play 2.7
你可以这样做:
import play.Environment
class MyController @Inject()(env: Environment) {
println(s"DevMode is ${env.isDev}")
println(s"ProdMode is ${env.isProd}")
println(s"TestMode is ${env.isTest}")
}或者在Play 2.6和Play 2.7中,您也有关于play.api.Environment的版本
import play.api.Environment
class MyController @Inject()(env: Environment) {
println(s"ProdMode is ${env.mode == Mode.Prod}")
println(s"DevMode is ${env.mode == Mode.Dev}")
println(s"TestMode is ${env.mode == Mode.Test}")
}Scala声明:
/**
* The environment for the application.
*
* Captures concerns relating to the classloader and the filesystem for the application.
*/https://stackoverflow.com/questions/14613148
复制相似问题