Scala Play Framework 2.x模板中的变量
我浏览了网页,但在任何地方都没有找到答案。如果我遗漏了什么,请给我指一个教程 因此,我想在Play框架模板中定义一个变量,当然,稍后再使用它 当前我的代码如下所示:Scala Play Framework 2.x模板中的变量,scala,playframework-2.0,twirl,Scala,Playframework 2.0,Twirl,我浏览了网页,但在任何地方都没有找到答案。如果我遗漏了什么,请给我指一个教程 因此,我想在Play框架模板中定义一个变量,当然,稍后再使用它 当前我的代码如下所示: @if(menuitems.fetchFromVerySlowDatabase() != null) { <ul> @for(menuitem <- menuitems.fetchFromVerySlowDatabase()) { <li><a href="@menuite
@if(menuitems.fetchFromVerySlowDatabase() != null) {
<ul>
@for(menuitem <- menuitems.fetchFromVerySlowDatabase()) {
<li><a href="@menuitem.getUrl()">menuitem.getTitle()</a></li>
}
</ul>
}
谢谢大家!
我使用Java作为编程语言
最好的,
舒贝只要记住一行就行了
@import scala.Predef; var menuitems_from_database = menuitems.fetchFromVerySlowDatabase();
实时代码示例(从默认模板修改index.scala.html
):
@import scala.Predef;var menuitems_from_database=new java.util.ArrayList[String]()
@(信息:String)
@{
来自数据库的菜单项。添加(“1”)
菜单项来自数据库。添加(“2”)
""
}
@主(“欢迎玩”){
@if(菜单项来自数据库!=null){
@for(menuitem)谢谢你的回答,但我不明白。我将代码更改为:var menuitems_from_database=menuitems.fetchFromVerySlowDatabase()@if(menuitems_from_database!=null){@for(menuitem有效!谢谢!一个小评论:现在是“真的”因为每个语句都必须向模板返回某些内容,所以只需像我的示例中向列表添加元素的部分那样使用它即可
因此您返回一个空字符串我知道这并不能回答您的问题,但您可能应该在调用模板之前进行任何繁重的计算,并将结果作为参数传递,而不是在模板内部执行操作,该操作只应用于显示内容。我同意,但是:我需要每页上的菜单项,因此我正在获取在模板中,否则每个控制器中的每一个动作都需要将菜单项传递给模板系统。或者至少,这就是我所想的。你有更好的解决方案吗?谢谢!如果你在每一页都需要它们,你可能想把它们装入尽可能少的时间。将它们作为控制器中的一个值进行一次性或永久性的调用,或者使用某种缓存系统来避免在每个页面上获取它们,特别是在名称似乎表明操作需要很长时间的情况下。然后,您可以创建一个函数,将此值传递给模板调用程序。是的,我正在尝试尽可能少地加载它。实际上,这几乎解决了(使用缓存)。但我确实希望避免将菜单项作为参数单独传递给每个模板。关于菜单。有一个很好的描述,我可以添加的只是您也可以添加缓存,play也有一个缓存API:
@import scala.Predef; var menuitems_from_database = menuitems.fetchFromVerySlowDatabase();
@import scala.Predef; var menuitems_from_database = new java.util.ArrayList[String]()
@(message: String)
@{
menuitems_from_database.add("1")
menuitems_from_database.add("2")
""
}
@main("Welcome to Play") {
@if(menuitems_from_database != null) {
<ul>
@for(menuitem <- menuitems_from_database) {
<li><a href="@menuitem">@menuitem</a></li>
}
</ul>
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Welcome to Play</title>
<link rel="stylesheet" media="screen" href="/assets/stylesheets/main.css">
<link rel="shortcut icon" type="image/png" href="/assets/images/favicon.png">
<script src="/assets/javascripts/hello.js" type="text/javascript"></script>
</head>
<body>
<ul>
<li><a href="1">1</a></li>
<li><a href="2">2</a></li>
</ul>
</body>
</html>