我是PlayFramework的新手。
请给我一个示例,了解如何从我的视图中访问配置参数。我正在使用PlayFramework 2.5.3
旧方式(@current已弃用):
@current.configuration.getString("environment.param")
新方式(据我所知,应该注入配置):
我知道如何从控制器访问它。
@Inject() (val messagesApi: MessagesApi, configuration: Configuration)
我如何在我看来使用它?
答案 0 :(得分:9)
可悲的是,你无能为力。这就是当DI被引入Play时的情况,关于模板的讨论并不多。一种可能的解决方案可能是:
Configuration
将implicit
发送到您的视图/模板
class Application @Inject() (implicit val config: Configuration) extends Controller {
def index = Action {
Ok(views.html.index("foo"))
}
}
您的模板将如下所示:
@(myParam1: Any)(implicit config: Configuration)
<h2>Some HTML here @myParam1 @config.getString("environment.param")</h2>
我完全清楚这在某种程度上违背了DI的目的,但这就是现在的情况。
答案 1 :(得分:2)
看起来2.6.x或twirl 1.2.0可能会有变化
https://github.com/playframework/twirl/pull/100
https://www.playframework.com/documentation/2.6.x/ScalaTemplates#Template-constructor
答案 2 :(得分:0)
在java中,要从play 2.5中的application.conf中读取,你应该在控制器中注入配置,如下所示:
public class HomeController extends Controller {
private Configuration configuration;
@Inject
public HomeController(Configuration configuration) {
this.configuration = configuration;
}
public Result index() {
String value = configuration.getString("key");
System.out.println("value of key is " + key);
return ok(value);
}
}
因为Configuration是一个具体的类,所以不需要在Module类中绑定它。
另见本讨论: DI for java in play 2.5