7

是否可以创建通用模板?

伪代码:

@(myForm: Form[T])

所以我可以像这样重用它们:

@inputText(
                myForm("title"), 
                '_label -> "title"

            )
  • 如果是,我该怎么做?
4

3 回答 3

9

为此使用魔术下划线:

@(form: Form[_])

这在 Scala 中称为存在类型,大致意思是“存在类型参数但我不在乎它是什么”。

于 2012-08-24T18:47:39.630 回答
4

我不喜欢这种@(form: Form[_])方法,因为它把类型安全抛到了窗外。

传入 时ok(form.render(userform)),您@form("lastNme")在模板中不会从编译器获得任何帮助,但如果在测试期间未捕获,您将收到运行时错误。

我正在做的是为常见形式(例如会员注册和会议注册,或联赛统计和球队统计等)提供接口(或 play 2 scala 中的特征);这样,在编译时,粗手指的错别字等就会被捕获。

是的,要处理的样板越多,但是从围栏的动态语言方面来看,我处理运行时错误越少越好......

于 2012-08-24T19:10:29.170 回答
2

你试过了吗?

app/views包中创建新的 vie: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]或其他任何东西。

于 2012-08-24T18:08:35.653 回答