Scala播放阅读表格输入

时间:2013-01-08 03:46:42

标签: playframework

我想读取'input'的值,然后控制器将输入传递给getTask(task: String)方法。

我该怎么做?这是我的代码片段。

@form(routes.Application.getTask("url")) {

        @inputText(taskForm("hash"))

        <input type="submit" value="Get">

    }

1 个答案:

答案 0 :(得分:0)

html <input>标签应该在浏览器中呈现,你的dom看起来应该是这样的(例如,对于使用twitter引导程序设计的表单,它使用用户名和密码来处理登录):

<form class="form-horizontal" action="/support/login" method="post">
  <div class="control-group">
    <label class="control-label" for="inputUsername">User Name</label>
    <div class="controls">
      <input type="text" id="inputUsername" name="username" placeholder="User Name">
    </div>
  </div>
  <div class="control-group">
    <label class="control-label" for="inputPassword">Password</label>
    <div class="controls">
      <input type="password" id="inputPassword" name="password" placeholder="Password">
    </div>
  </div>
  <div class="control-group">
    <div class="controls">
      <button type="submit" class="btn">Log in</button>
      <button type="submit" class="btn">Forgot Password</button>
    </div>
  </div>
</form>

您使用jquery.ajax或点击<button type="submit" ...>发布表单。这将向服务器发送一个请求,播放框架将处理,在scala中代码看起来像这样:

  private def loginForm() = Form(
    tuple("username" -> text, "password" -> text)
      .verifying("Invalid username or password", result => Auth.authenticate(result._1, result._2)))

  def doLogin = Action { implicit request =>
    loginForm().bindFromRequest.fold(
      formWithErrors => authenticationFailed(request),
      form => gotoLoginSucceeded(UserId(form._1))
    )
  }

formWithErrorsform是已解析的表单对象。