1
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                   controllers.Application.index()

# Tasks
GET     /tasks              controllers.Application.tasks()
POST    /tasks              controllers.Application.newTask()
POST    /tasks/:id/delete   controllers.Application.deleteTask(id: Long)

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file       controllers.Assets.at(path="/public", file)

网址:

http://localhost:9000/tasks/2/delete

错误:

Action not found

For request 'GET /tasks/2/delete'
These routes have been tried, in this order:

1 GET   /                          controllers.Application.index()
2 GET   /tasks                     controllers.Application.tasks()
3 POST  /tasks                     controllers.Application.newTask()
4 POST  /tasks/$id<[^/]+>/delete   controllers.Application.deleteTask(id:Long)
5 GET   /assets/$file<.+>          controllers.Assets.at(path:String = "/public", file:String)

HTML 片段:

<form action="/tasks/2/delete" method="POST" >
   <input type="submit" value="Delete">
</form>

我不明白为什么第 4 条规则不能适用。

我的错误在哪里?

4

2 回答 2

0

它说找不到GET /tasks/2/delete,因为您只使用 POST 定义了一条路线:

POST    /tasks/:id/delete   controllers.Application.deleteTask(id: Long)

所以你必须做一个POST请求而不是GET。

于 2013-09-26T12:46:38.173 回答
0

我终于完成了自己的 POST 请求以添加缺少的 id:

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

@import helper._

@main("Todo list") {
    <h1>@tasks.size() task(s)</h1>
    <ul>
    @for(task <- tasks) {
        <li>
        @task.label
        @form(routes.Application.deleteTask(task.id)) {
            <input type="hidden" id="id" value="@task.id"><!-- *** added ***-->
            <input type="submit" value="Delete">
        }
        </li>
    }
    </ul>

    <h2>Add a new task</h2>
    @form(routes.Application.newTask()) {
        @inputText(taskForm("label")) 
        <input type="submit" value="Create">
    }
}

生成的 HTML 是:

<form action="/tasks/1/delete" method="POST" >
   <input type="hidden" id="id" value="1">
   <input type="submit" value="Delete">
</form>

在 PlayFramework 2.1.5 之上执行的 PlayFramework 2.2.0 的 todolist 示例不能很好地工作......

于 2013-09-26T13:35:12.263 回答