首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在scala代码中调用Twirl模板

在scala代码中调用Twirl模板
EN

Stack Overflow用户
提问于 2016-07-21 14:42:38
回答 1查看 843关注 0票数 0

我有一个Play Scala 2.5应用程序。我想知道如何在scala代码的另一个Twirl模板中返回Twirl模板(如果可能的话)。

示例:我有几个对应于html输入元素的Twirl模板。一个模板用于输入文本,另一个模板用于输入复选框,等等。我有一个主模板,在里面我从Scala对象或类调用一个助手方法,并根据某些条件返回希望输入元素的Twirl模板。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-21 16:29:17

在这个答案中,我假设模板具有相同的输入参数和输出类型(HTML)。播放文档说模板被编译成普通的Scala函数。

例如,假设您有两个模板,template1和template2,它们都有输入参数a: String。主模板应该使用这两种方法中的任何一种,因此它有一个template: String => HtmlFormat.Appendable参数。

template1

代码语言:javascript
复制
@(a: String)
@{ a + " world!" }

template2

代码语言:javascript
复制
@(a: String)
@{ a + " Stackoverflow!" }

代码语言:javascript
复制
@(template: String => HtmlFormat.Appendable)
@template("Hello")

如果我们通过template1,就会得到"Hello!“,如果我们通过template2,就会得到"Hello!”。

现在,您可以定义一个方法 getTemplate来获取想要的模板:

代码语言:javascript
复制
val t1 = views.html.template1.apply _
val t2 = views.html.template2.apply _

def getTemplate(param: Int) = if(param == 1) t1 else t2

最后,使用Application 控制器方法:

代码语言:javascript
复制
def showTemplate(param: Int) = Action {
  val template = getTemplate(param)
  Ok(views.html.mainTemplate(template))
}

当然还有路由

代码语言:javascript
复制
GET     /template/:id               controllers.Application.showTemplate(id: Int)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38507318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档