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)

URL:

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/deletePOST を使用してルートを定義しただけなので、見つからないと表示されます。

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

したがって、GET の代わりに POST リクエストを実行する必要があります。

于 2013-09-26T12:46:38.173 に答える
0

最後に、不足している ID を追加する POST リクエストを自分で完了します。

@(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 に答える