【问题标题】:Scala Play Read Form InputScala Play 读取表单输入
【发布时间】:2013-01-12 00:02:20
【问题描述】:

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

我该怎么做?这是我的代码 sn-p。

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

        @inputText(taskForm("hash"))

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

    }

【问题讨论】:

  • 你的问题有点不清楚。我不明白你的意思:控制器会将输入传递给 getTask...。控制器中的绑定数据在 playframework.org/documentation/2.0.4/ScalaForms 中描述
  • 基本上我想添加一个接受整数(哈希)的输入。然后,我希望Task.scala 的getTask(hash: Int) 方法对相应的URL 进行数据库查找,然后在页面上显示该URL。但我不知道如何使用类似于上面的代码来实现这一点。

标签: playframework


【解决方案1】:

html &lt;input&gt; 标签应该在浏览器中呈现,你的 dom 应该看起来像这样(例如,对于一个使用用户名和密码处理登录的 twitter bootstrap 样式的表单):

<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 或单击 &lt;button type="submit" ...&gt; 来发布表单。这将向播放框架将处理的服务器发送一个请求,该代码在 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 是解析后的表单对象。

【讨论】:

  • 真的有这么多代码吗?看看“newTask”方法有多简单:&lt;h2&gt;Add a new tinyUrl&lt;/h2&gt; @form(routes.Application.newTask) { @inputText(taskForm("url")) &lt;input type="submit" value="Create"&gt; }
  • 我刚刚粘贴了一些我知道有效的东西,我相信你可以简化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多