gpt4 book ai didi

java - 如何在 Freemarker DropWizard 中使用按钮调用方法

转载 作者:行者123 更新时间:2023-11-30 06:16:11 29 4
gpt4 key购买 nike

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

这是按钮的代码:

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

理论上,这应该激活一个向 SQL Server 发送删除请求的方法。我最初使用的方法是:

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

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

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

但这遇到了一个问题,即我无法将返回人员列表的 PersonView 应用于 deletePerson,这是一个 void 方法。有谁对我如何做到这一点有任何见解?看起来应该很简单,但我不明白。

编辑:

除了 user7294900 关于提交按钮的回答之外,我还需要对删除方法进行更改。在研究这个问题时,我还发现html表单不能与DELETE或PUT方法一起使用;仅 POST 和 GET。考虑到这一点,我将资源方法更改为使用@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 input类型应为 submit 类型以便提交表单

elements of type "submit" are rendered as buttons. When the click event occurs (typically because the user clicked the button), the user agent attempts to submit the form to the server

因此将按钮更改为:

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

关于java - 如何在 Freemarker DropWizard 中使用按钮调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49154565/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com