播放表单参数有助于解密编译错误

时间:2012-04-09 11:56:51

标签: scala view playframework playframework-2.0

我有一个像这样定义的控制器:

package controllers

import play.api._
import play.api.mvc._
import models.Task
import play.api.data.Form

object Application extends Controller {

  def index = Action {
    // Compiler error on Form
    Ok(views.html.index(List[Task](), Form("label" -> "This is a label")))  
  }

  def tasks = TODO

  def newTask = TODO

  def deleteTask(id: Long) = TODO

}

然后我定义了一个视图:

@(tasks: List[Task], taskForm: Form[String])

@import helper._

@main("Todo list") {

  <h1>@tasks.size task(s)</h1>

  <ul>
    @tasks.map { task =>
      <li>
        @task.label

        @form(routes.Application.deleteTask(task.id)) {
          <input type="submit" value="Delete">
        }
      </li>
    }
  </ul> 

}

这会产生以下编译器错误:

  

重载方法值适用于替代方案:[T](映射:   (String,play.api.data.Mapping [T]))play.api.data.Form [T]
  [T](制图:play.api.data.Mapping [T])play.api.data.Form [T]不能   应用于((java.lang.String,   java.lang.String))Application.scala / todolist / app / controllers行   11斯卡拉问题

你能帮我解读一下编译器的输出吗?

1 个答案:

答案 0 :(得分:1)

这是您的问题:Form("label" -> "This is a label")。您正在尝试调用方法Form.apply(p: (String, String)),并且Form对象中没有此类方法。