0

我正在寻找一种解决方案来完成与这个类似问题相同的事情:

带有 java Play Framework 2 的 HTML 表单

但是在斯卡拉。有没有办法做到这一点?我只有一个文本字段和一个提交按钮。我想在按下按钮时从文本字段中获取值并将该值传递给后端代码。

4

2 回答 2

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 :)">
    }
于 2013-05-28T12:00:47.773 回答
3

基本上,以与使用 java Play Framework 2的 HTML 表单相同的方式设置视图和表单,然后将其放入您的控制器中。

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)
      }
    )
  }
}

Play 2.1 表单文档

于 2013-05-09T00:14:52.257 回答