2013-09-26 3 views
0
# 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-адрес:PlayFramework 2.1.5/Java/Действие не найдено

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> 

Я не» t понять, почему правило №4 не может применяться.

Где моя ошибка?

ответ

0

я, наконец, завершить себя запрос 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> 

ToDoList образец PlayFramework 2.2.0 выполняется на верхней части PlayFramework 2,1. 5 не работает очень хорошо ...

0

Он говорит, что не может найти GET /tasks/2/delete, потому что вы только определили маршрут с использованием POST:

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

Так что вы должны сделать запрос POST вместо GET.

+0

HTML добавлен в мое предыдущее сообщение, чтобы показать, что это запрос POST, как я могу изменить способ передачи аргументов? – Aubin

+1

@Aubin Форма выглядит хорошо, ее следует отправить как POST, насколько я могу судить. Может быть, какой-то javascript вмешивается в форму submit? Попробуйте посмотреть в сетевой консоли браузера, чтобы проверить, что на самом деле отправляет. – Kapep

Смежные вопросы