ut我有一个 Spark/Velocity 模板应用程序,我正在尝试使用 PUT 路由来遵循良好的 REST 约定来更新我的数据库中的记录。
在我的 HTML 表单中,我获得了更新我的 postgres 数据库中的记录所需的信息:
<form action="/tasks/$editTask.getId()">
<input id="description" name="description" type="text" value="$editTask.getDescription()">
<input type="date" name="duedate" value="$editTask.getDueDate()">
<button type="submit">Edit task</button>
</form>
但我对如何在我的应用程序中捕获这一点感到困惑。爪哇。如果我改变方法,method="PUT"
什么都不会发生。以下是我的 PUT 路线:
post("/tasks/:id", (request,response) -> {
HashMap<String, Object> model = new HashMap<String, Object>();
int id = Integer.parseInt(request.params("id"));
Task editTask = Task.find(id);
String newDescription = request.queryParams("description");
String newDueDate = request.queryParams("duedate");
editTask.update(newDescription, newDueDate);
model.put("editTask", editTask);
model.put("template", "templates/tasks.vtl");
return new ModelAndView(model, layout);
}, new VelocityTemplateEngine());
我尝试添加一个隐藏的输入字段:
<input type="hidden" name="_method" value="put">
以我的形式,但它没有做任何事情。当我尝试访问 put 路由时,我没有收到任何错误,只是没有任何反应。我已经测试了我的代码以更新 POST 路线上的记录,并且它可以顺利运行。
非常感谢您提供有关如何使用 PUT 的任何指示,因为我认为使用 DELETE 等会遇到同样的问题。