在播放框架中为复选框动态生成标签
Dynamically generate label for checkbox in play framework
我对 Scala 和 play 框架还很陌生,在为表单中的复选框生成标签时遇到了问题。标签是使用播放框架 (2.6.10) 及其旋转模板引擎生成的。我也在使用 play-bootstrap 库。
以下是我的form.scala.html
.
的简化版
@(enrolForm: Form[EnrolData], repo: RegistrationRepository)(implicit request: MessagesRequestHeader)
@main("Enrol") {
@b4.horizontal.formCSRF(action = routes.EnrolController.enrolPost(), "col-md-2", "col-md-10") { implicit vfc =>
@b4.checkbox(enrolForm("car")("hasCar"), '_text -> "Checkbox @repo.priceCar")
}
}
我无法 "evaluate" @repo.priceCar
部分。它只是没有被评估,我得到了文字字符串“@repo.priceCar”。
根据 the play framework documentation regarding string interpolation,我应该使用 $
而不是 @
,但这也不起作用。
当我遗漏字符串周围的 "
时,我会遇到各种错误。
如果能提示我必须做什么,我将不胜感激。
您的问题是编译器按字面意思读取字符串 Checkbox @repo.priceCar
。
您需要将字符串相加或使用字符串插值来访问此变量,因为 @
在普通 Scala 字符串中不是有效的转义字符:
@b4.checkbox(enrolForm("car")("hasCar"), '_text -> s"Checkbox ${repo.priceCar}")
这是将变量 repo.priceCar
注入到字符串中,而不是将 repo.priceCar
按字面意思作为字符串读取。
一般来说,当你想在字符串中放置一个变量时,你会使用 $
:
var something = "hello"
println(s"$something, world!")
现在,如果有像user.username
这样的成员,您需要使用${user.username}
:
println(s" current user is ${user.username}")
总的来说,您需要在 Playframework 的视图中使用转义字符 @
,当您使用变量时,它将是:
s" Current user: ${@user.username}"
因此 '_text
值应如下所示:
'_text -> s"Checkbox ${repo.priceCar}" //we drop the @ because the line started with '@'
我对 Scala 和 play 框架还很陌生,在为表单中的复选框生成标签时遇到了问题。标签是使用播放框架 (2.6.10) 及其旋转模板引擎生成的。我也在使用 play-bootstrap 库。
以下是我的form.scala.html
.
@(enrolForm: Form[EnrolData], repo: RegistrationRepository)(implicit request: MessagesRequestHeader)
@main("Enrol") {
@b4.horizontal.formCSRF(action = routes.EnrolController.enrolPost(), "col-md-2", "col-md-10") { implicit vfc =>
@b4.checkbox(enrolForm("car")("hasCar"), '_text -> "Checkbox @repo.priceCar")
}
}
我无法 "evaluate" @repo.priceCar
部分。它只是没有被评估,我得到了文字字符串“@repo.priceCar”。
根据 the play framework documentation regarding string interpolation,我应该使用 $
而不是 @
,但这也不起作用。
当我遗漏字符串周围的 "
时,我会遇到各种错误。
如果能提示我必须做什么,我将不胜感激。
您的问题是编译器按字面意思读取字符串 Checkbox @repo.priceCar
。
您需要将字符串相加或使用字符串插值来访问此变量,因为 @
在普通 Scala 字符串中不是有效的转义字符:
@b4.checkbox(enrolForm("car")("hasCar"), '_text -> s"Checkbox ${repo.priceCar}")
这是将变量 repo.priceCar
注入到字符串中,而不是将 repo.priceCar
按字面意思作为字符串读取。
一般来说,当你想在字符串中放置一个变量时,你会使用 $
:
var something = "hello"
println(s"$something, world!")
现在,如果有像user.username
这样的成员,您需要使用${user.username}
:
println(s" current user is ${user.username}")
总的来说,您需要在 Playframework 的视图中使用转义字符 @
,当您使用变量时,它将是:
s" Current user: ${@user.username}"
因此 '_text
值应如下所示:
'_text -> s"Checkbox ${repo.priceCar}" //we drop the @ because the line started with '@'