我正在寻找一个解决方案,以完成与此类似问题相同的事情:
HTML forms with java Play Framework 2
但是在斯卡拉。有没有办法做到这一点?我只有一个文本字段和一个提交按钮。我想在按下我的按钮时从文本字段中获取值,并将此值传递给后端代码。
答案 0 :(得分:5)
object MyController extends Controller {
val submissionForm = Form(
single("myvalue" -> text)
)
def myaction = TODO //as like @mbarlocker told before
}
在单个输入的这种简单情况下,您不必在表单定义中使用映射,也不必在输入处使用任何模板助手。模板助手很有用,但在这种情况下,您可以自由地进行布局,而无需编写自定义字段构造函数。例如,如果您需要在输入字段旁边放置提交按钮,只需编写如下内容:
@form(routes.Application.myaction, 'class -> "form-inline") {
<input type="text" id="myvalue" name="myvalue" value="@submissionForm.data.get("myvalue")">
<input type="submit" class="btn" value="Submit :)">
}
答案 1 :(得分:3)
基本上,设置视图&amp;形成与HTML forms with java Play Framework 2中相同的方式,然后将其放入您的控制器中。
object MyController extends Controller {
case class Submission(value: String)
val submissionForm = Form(
mapping(
"value" -> text
)(Submission.apply)(Submission.unapply)
)
def myaction = Action { implicit request =>
submissionForm.bindFromRequest().fold(
formWithErrors => {
// do something with the bad form, like reshow the view
Ok("got a bad form")
},
submission => {
// do something with the submitted form
Ok("got " + submission.value)
}
)
}
}