如何在Freemark DropWizard中使用按钮调用方法



我正在尝试在Freemarker模板中使用按钮调用删除方法。 我认为这就像在我的资源类中为该方法定义路径一样简单,然后将表单的操作指向该路径;但是,当我按下按钮时没有任何反应。

下面是按钮的代码:

<form action="http://localhost:8080/person/delete/${person.id}">
<input type="button" value="Delete"></form>

从理论上讲,这应该激活向SQL服务器发送删除请求的方法。 我用于此的原始方法是:

@DELETE
@Path("/delete/{id}")
public void deletePerson(@PathParam("id") int id) {
manager.deletePerson(id);
}

这使用 DAO 发送请求。 我在邮递员中对此进行了测试,它有效。 我以为我可以将按钮指向相同的路径来使用它,但这不起作用。 因此,我尝试修改构造函数用于 ftl 模板的方法:

@DELETE
@Path("/delete/{id}")
public PersonView deletePerson(@PathParam("id") int id) {
return new PersonView(manager.deletePerson(id));
}

但这遇到了一个问题,即我无法将返回人员列表的 PersonView 应用于删除 Person,这是一种无效方法。 有人对我如何做到这一点有任何见解吗?看起来应该很简单,但我想不通。

编辑:

除了 user7294900 关于提交按钮的答案外,我还需要对删除方法进行更改。 在研究这个问题时,我还发现 html 表单不能使用 DELETE 或 PUT 方法;只有发布和获取。 考虑到这一点,我将资源方法更改为使用@POST注释:

@POST
@Path("/delete/{id}")
public void deletePerson(@PathParam("id") int id) {
manager.deletePerson(id);
}

我还对表单按钮进行了必要的提交更改:

<form method="post" action="http://localhost:8080/person/delete/${profile.id}">
<input type="submit" value="Delete"></form>

似乎您的问题是 HTML 输入类型,应该submit输入类型才能提交表单

类型为"提交"的元素呈现为按钮。当单击事件发生时(通常是因为用户单击了按钮),用户代理尝试将表单提交到服务器

因此,请将按钮更改为:

<input type="submit" value="Delete"></form></td>

相关内容

  • 没有找到相关文章

最新更新