myb*_*dur 2 scala playframework
我应该使用一个函数作为scala函数参数.该函数如下所示:
def apply(field: Field, options: Seq[(String, String)], args: (Symbol, Any)*)(implicit handler: FieldConstructor, lang: Lang): Html
Run Code Online (Sandbox Code Playgroud)
该args
参数采用如下数组:
'_label -> "mylabel", '_showConstraints -> false, 'class -> "form-control"
Run Code Online (Sandbox Code Playgroud)
在play框架中,它看起来像这样:
@helper.select(myForm("fieldName"), options = options(MyObject.options), '_label -> "mylabel", '_showConstraints -> false, 'class -> "form-control")
Run Code Online (Sandbox Code Playgroud)
如何正确编写将项添加到数组的方法?像这样的东西:
@helper.select(callForm("callee"), options = options(LineDimension.options), args('_label -> "mylabel", '_showConstraints -> false, 'class -> "form-control"))
Run Code Online (Sandbox Code Playgroud)
功能:
@args(args: (Symbol, Any)*) = @{
if (!filterEnabled) {
args.add('disabled -> "disabled")
}
args
}
Run Code Online (Sandbox Code Playgroud)
播放控制台的错误消息是:
... type mismatch;
[error] found : Seq[(Symbol, Any)]
[error] required: (Symbol, Any)
[error] @helper.select(callForm("callee"), options = options(LineDimension.options), args('_label -> Messages.get("call.callee.choose"), '_showConstraints -> false, 'class -> "form-control"))
Run Code Online (Sandbox Code Playgroud)
使用 args(...): _*
@helper.select(callForm("callee"), options = options(LineDimension.options), args('_label -> Messages.get("call.callee.choose"), '_showConstraints -> false, 'class -> "form-control"): _*)
Run Code Online (Sandbox Code Playgroud)
编辑:
@args(args: (Symbol, Any)*) = @{
if (!filterEnabled) {
args :+ ('disabled -> "disabled")
} else args
}
Run Code Online (Sandbox Code Playgroud)
然后像我上面提到的那样使用.