play framework 2.0中有多个字段构造函数

时间:2012-11-27 14:55:27

标签: playframework playframework-2.0

我使用twitter bootstrap作为像这样的字段构造器


    @import helper.twitterBootstrap._
    @implicitFieldConstructor = @{ FieldConstructor(extra.twitterBootstrapInput.f) }

我如何添加/使用其他字段构造函数?

谢谢

2 个答案:

答案 0 :(得分:3)

你可以在模板中只有一个,但你可能会破解它。

首先让我们理解代码。您显示的代码会在生成的Scala代码中创建一个名为implicit的{​​{1}}(名称以Implicit开头)变量。因为它具有类型fieldConstructor(从指定的值自动推断),它将用于可能需要隐式FieldConstructor的那些地方。

如果您以相似的方式声明另一个相同类型的var,Scala将不知道使用哪个隐式并且会引发错误。

那就是说,您可以明确地将FieldConstructor声明为:

FieldConstructor

注意第3个参数是明确的。

这应该允许您创建更多构造函数,如下所示:

 @input(field, args:_*)( Htmlcode)(implicitFieldConstructor)

警告:我现在无法对此进行全面测试,但考虑到模板的行为方式似乎是您唯一的选择。

答案 1 :(得分:0)

我想到的另一种方法是在一个字段构造函数中添加if else语句,例如在表单中:

@inputFile(
     nsForm("plateFiles"),
 '_label -> "Upload files",
 'uploadwidget -> "Select file(s)"
)

并在你的字段构造函数中:

@if(elements.args.contains('uploadwidget)){
    //Do something here
}else{
    //Do something else
}