是否可以创建通用模板?
伪代码:
@(myForm: Form[T])
所以我可以像这样重复使用它们:
@inputText(
myForm("title"),
'_label -> "title"
)
答案 0 :(得分:9)
使用魔力下划线:
@(form: Form[_])
这在Scala中称为存在类型,它大致意味着“存在类型参数,但我不在乎它是什么”。
答案 1 :(得分:4)
我不喜欢@(form: Form[_])
方法,因为它会将窗口中的类型安全抛出。
传入ok(form.render(userform))
时,在模板中@form("lastNme")
时,编译器将无法获得帮助,但如果在测试期间没有捕获,则会出现运行时错误。
我正在做的是为常见表格提供界面(或游戏2 scala中的特征)(例如会员注册和会议注册,或联盟统计和团队统计等);这样,在编译时,肥胖的错别字等都被抓住了。
是的,要处理更多的样板,但是从围栏的动态语言方面来看,我越少处理运行时错误就越好......
答案 2 :(得分:2)
你试过吗?
在app/views
包中创建新视图:pseudo.scala.html
@(someParam: String)
<h1>This is my pseudo template</h1>
<div>And there is some param: <b>@someParam</b></div>
然后在任何其他视图中,您可以像这样使用它:
...
<div>@pseudo("param pam pam")</div>
...
当然,您的参数不必仅为String
,因此您可以通过Form[T]
,List[T]
或其他任何内容。